免责声明:我是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有关,我一定是缺少更基本的东西
答案 0 :(得分:1)
似乎
Vector3 q1 = ...
初始化一个局部变量,但显然你想引用一个类成员。为什么不参考
this.q1 = ...
就像使用n
一样?