You can create a custom class with the method you need like this:
class MyScene: SKScene {
func CheckMusicMute() {
if InGameMusicOnOff == true {
SoundMute.texture = SKTexture(imageNamed: "SilverCircle.png")!
}
if InGameMusicOnOff == false {
SoundMute.texture = SKTexture(imageNamed: "RedCircle.png")!
}
}
}
Then make GameScene
extend MyScene
:
class GameScene: MyScene
Well. In your GameViewController you have to transform your func in class func like this
class func yourFunc {
//your code
}
To call it from your GameScene just this code :
GameViewController.yourFunc()
Don’t forget you are creating a global function so all variables in it have to be global too.
For you label (global):
var label:UILabel = UILabel()
in Your GameViewController:
class GameViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
label.text = "bonjour" // to set the text
label.frame = CGRectMake(0, 0, 100, 100) / set the position AND size CGRectMake (x, y, width, heigth)
label.textColor = UIColor.redColor() // set your color
label.center = CGPointMake(self.view.frame.width/2, self.view.frame.height/2) // set the position from x=0 and y=0
self.view.addSubview(label) // add the label to your screen
I hope it will help you.
Unless you declare the function as private
or fileprivate
, which limit the visibility to the file or scope where it is defined, you can use it anywhere in the module if declared as internal
(the default), and also from external modules if declared as public
or open
.
However since you say that you need it in view controllers only, why not implementing it as an extension to the view controller?
extension UIViewController {
func displayAlert(title:String, error:String, buttonText: String) {
...
}
}
Almost every projects contains Utility Functions. With the introduction of Swift, there are multiple ways to write such functions.
Static Functions
Static functions are invoked by the class itself, not by an instance. This makes it simple to invoke utility functions without having to manage an object to do that work for you.
We can access static function as AppUtils.appUtility()
Static functions can not be overridden.
Class Functions
Class functions (not instance methods) are also static functions but they are dynamically dispatched and can be overridden by subclasses unlike static functions.
We can access them similar to static functions as AppUtils.appUtility()
and AppOtherUtils.appUtility()
.
static
is same as class final
.