2017-02-24 32 views
0

我正在使用C#在Unity 3D上製作一個簡單的CAD應用程序來配置壁櫥。現在我有幾個腳本和類,我需要爲該項目的每個腳本訪問一個全局對象。如何在C上創建全局對象#

我試着將壁櫥類設置爲static,但是,因爲每當我不能這樣做時就修改壁櫥類。是我第一次與C#合作,並且我有點失落。

回答

1

不是全局的,我會建議創建一個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"); 
    } 
} 
+0

這是唯一正確的方法,因爲'public static'類,方法或變量是最接近'global'的c#。 – CDove

+0

但是,如果我這樣做,我失去了衣櫃的所有信息。它不是我尋找的方式,因爲我的壁櫥對象由四個GameObjects和幾個內部對象組成,所以它必須是一個全局壁櫥對象 – davidroman

0

我以前面臨同樣的問題。我想出的解決方案很簡單創建一個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>(); 
    } 
} 
0

我的壞,不知道爲什麼,但我第一次與static試了一下想出了一些錯誤,但現在它工作得很好。我可以從任何地方訪問這個對象。