这里是 C# 的新手......试图弄清楚下面的 new GameObject[20, 20]
如何实际引用私有(private)属性值而不是硬编码值。
private int xRadius = 20;
private int yRadius = 20;
private GameObject [,] grid = new GameObject[20, 20];
我试过 this.xRadius
和 self.xRadius
的变体,但没有成功。我该怎么做?
最佳答案
您不能在类的变量声明范围内使用 this
,因为此时没有理由在 grid< 之前定义
。 xRadius
/
您可以通过将 xRadius
和 yRadius
声明为常量来实现您想要的(常量是不可变的变量,在运行时不会改变);
private const xRadius = 20;
private const yRadius = 20;
private GameObject[,] grid = new GameObject[xRadius, yRadius];
或者将它们标记为静态变量(静态变量存在于任何类实例之外,并且在任何类实例消失后可用);
class Example {
private static xRadius = 20;
private static yRadius = 20;
private GameObject[,] grid = new GameObject[Example.xRadius, Example.yRadius];
或者您可以在类构造函数中定义网格并使用普通类变量引用;
class Example {
public Example() {
this.grid = new GameObject[this.xRadius, this.yRadius];
}
}
最快的解决方案(就运行时较少的资源使用而言)是使用constants
,因为值将在编译时被复制并且它们不会占用任何额外的资源,最动态的解决方案是设置它们在构造函数中或在您访问网格对象之前这将允许您在运行时更改 xRadius
和 yRadius
并重新初始化 grid
变量使用相同的半径变量。
关于c# - 如何指定动态默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780156/