我正在使用C#在Unity 3D上製作一個簡單的CAD應用程序來配置壁櫥。現在我有幾個腳本和類,我需要爲該項目的每個腳本訪問一個全局對象。如何在C上創建全局對象#
我試着將壁櫥類設置爲static
,但是,因爲每當我不能這樣做時就修改壁櫥類。是我第一次與C#合作,並且我有點失落。
我正在使用C#在Unity 3D上製作一個簡單的CAD應用程序來配置壁櫥。現在我有幾個腳本和類,我需要爲該項目的每個腳本訪問一個全局對象。如何在C上創建全局對象#
我試着將壁櫥類設置爲static
,但是,因爲每當我不能這樣做時就修改壁櫥類。是我第一次與C#合作,並且我有點失落。
不是全局的,我會建議創建一個GameObject,然後使用GameObject.Find()方法在腳本中找到它。
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
private GameObject cabinet;
void Start() {
//find the cabinet object in your scene
cabinet = GameObject.Find("Cabinet");
}
}
我以前面臨同樣的問題。我想出的解決方案很簡單創建一個WorldGameObject,其中所有對象都來自於項目層次結構中的所有對象
然後,如果您希望可以在所有類中調用此代碼或創建一個基類,該基類通過根
using UnityEngine;
using System.Collections;
//Add this class to your world game object and store your globals here
public class GlobalContext : MonoBehaviour{
}
public class BaseClass : MonoBehaviour {
private GlobalContext world;
void Start() {
//find the cabinet object in your scene
world= transform.root.GetComponent<GlobalContext>();
}
}
我的壞,不知道爲什麼,但我第一次與static
試了一下想出了一些錯誤,但現在它工作得很好。我可以從任何地方訪問這個對象。
這是唯一正確的方法,因爲'public static'類,方法或變量是最接近'global'的c#。 – CDove
但是,如果我這樣做,我失去了衣櫃的所有信息。它不是我尋找的方式,因爲我的壁櫥對象由四個GameObjects和幾個內部對象組成,所以它必須是一個全局壁櫥對象 – davidroman