Unity,单例:vector3作为字段在int执行时不会被传递

时间:2014-07-05 13:16:22

标签: unity3d singleton field

免责声明:我是Unity和Csharp的新手

我正在研究一些HexGrid游戏,我已经定义了一个简单的Singleton类的字段属性,一些向量用于计算(在该类中)。

问题是当我想要使用它们时,向量是空的,尽管在Awake()中初始化但是我在调​​试期间发现了做同样的事情并且整数工作正常。

这是最简单的条码,以便更好地解释自己:

 public class GridInterface : MonoBehaviour {
 private static GridInterface instance;

 Vector3 q1;
 int n;

 protected GridInterface() {}

 public static GridInterface Instance {
            get {
                    if (instance == null)
                            instance = GameObject.FindObjectOfType (typeof(GridInterface)) as GridInterface;
                    return instance;
            }
 }

    void Awake ()
    {

        Vector3 q1 = new Vector3(Mathf.Sqrt(3) * 0.5f, 0, -0.5f);
        n = 10;
        instance = this;              
    }

    void SomeFunction () {
        Debug.Log("n="+n);
        Debug.Log("q1="+q1);
    }
}

当我致电GridInterface.Instance.SomeFunction()时,我看到了预期n=10,但请参阅q1 = (0,0,0)

我想我可以使用数组而不是矢量,因为我只需要坐标,但我想了解为什么当我使用实例时,唤醒中的q1值不可用。

为什么? Vector3有什么特别之处?

编辑:经过一些测试,它也发生在阵列上,我不认为这与Unity有关,我一定是缺少更基本的东西

1 个答案:

答案 0 :(得分:1)

似乎

 Vector3 q1 = ...

初始化一个局部变量,但显然你想引用一个类成员。为什么不参考

 this.q1 = ...

就像使用n一样?