- Home /
Can I create a global function/variable without a class in c#, or to skip reference to it?
For example, I don't want to refer to Debug class when I need Log function. To skip it, I first tried to create a Namespace:
using UnityEngine;
using System.Collections;
namespace NMain
{
void trace(object &message)
{
Debug.Log(message);
}
}
Then I got CS0116. The other idea was to put #define in the beginning of the code, but, for some reasons, it fails with CS1025
#define trace Debug.Log
using UnityEngine;
using System.Collections;
public class test_camera_pattern : MonoBehaviour
{
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
trace(transform.position.x);
}
}
Debug. Log is not a big problem, but there are methods on a higher level of nesting than its one. I can create my own class to skip some references, but then I'll have to refer to it. Isn't there a better way to do it?
I think you have to put it in a class but there's no need to inherit monobehaviour so you don't have to attach it. Just use the class as a namespace then? e.g.
using UnityEngine;
using System.Collections;
public class theClassName{
public static void Function(){
}
}
Answer by KellyThomas · Dec 29, 2013 at 03:21 PM
If you create a custom class that inherits from MonoBehavior and inherent all of your scripts from your custom class, then they will have access to any functionality you make available from your custom class.
This is textbook Inheritance.
using UnityEngine;
using System.Collections;
public class CustomBehaviour : MonoBehaviour {
protected void Log(string message) {
Debug.Log(message);
}
}
using UnityEngine;
using System.Collections;
public class MyScript : CustomBehaviour {
void Start() {
Log("Hello World");
}
}
Note that this is how the functionality we take for granted in MonoBehaviour is implemented:
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
How to exclude code if a certain script is not present in the project. 2 Answers
Restrict access to components on same object 1 Answer
Getting a variable from another script 2 Answers