我有一个function
,它将从1到5随机选择一个数字,然后在该函数内部我有一个if
语句,它将函数的输出数字分配给一个名为randID
(为了在我的游戏中随机选择一个区域)。
在另一个课程中,我想查看zoneID
是否等于randID
(我之前随机选择的那个),如果是,我想打印一条消息。
我会在一个类中执行此操作,但是我在游戏中使用此类有多个对象,我需要主游戏操作符类来决定选择哪个区域。
想象一下总部的游戏;这基本上就是我想要弄清楚的。现在大部分系统都已到位。 :)
我提前感谢您提供的任何帮助或指导。
PS :我正在使用C#和Unity3D来创建此项目。
修改:代码。
public static void DecideID() {
if (gameLeft >= 1f && timeZone_Zone.zoneAlive == false) {
float random = Random.Range(0f, 5f);
print (random);
if(random > 1f && random < 2f) {
id = 1;
print (id);
}
else if(random > 2f && random < 3f) {
id = 2;
print (id);
}
else if(random > 3f && random < 4f) {
id = 3;
print (id);
}
else if(random > 4f && random < 5f) {
id = 4;
print (id);
}
else if(random >= 5f) {
id = 5;
print (id);
}
}
print (id)
语句仅用于测试目的。
然后我想做这样的事情:
if (zoneID = randID) {
GetComponent<MeshRenderer>().enabled = true;
}
答案 0 :(得分:1)
您想要的是在另一个脚本中访问组件的变量。将randID
公开,然后您可以在另一个脚本中访问它。
TypeWithRand randtype;
...
void Start()
{
randtype = objWithRand.GetComponent<TypeWithRand>();
}
...
if (randtype.randID == zoneID)
{
...
}
您必须将TypeWithRand
替换为包含randID
方法的类型。
另一种方法是让类的实例包含randID
。然后你可以检查如下的值:
RandClass randClass;
...
if (randClass.randID == zoneID)
{
//do stuff
}
这意味着您在DecideID
的构造函数中调用RandClass
(我在下面修改的方式)。您也可以将该函数保留为void,但随后在函数中设置randID
的值类似于设置id
的方式。然后你可以从类的实例中调用函数
randClass.DecideID();
if (randClass.randID == zoneID)
{
//do stuff
}
此外,您的DecideID
功能在某些方面不正确。首先,Random.Range()
可以使用整数,而不需要多个if语句。
id = Random.Range(0, 5);
你也可以返回id的值,稍后再引用它,所以randID
的赋值看起来像
randID = DecideID();
所以,你的实际功能如下:
public int DecideID() {
id = 0;
if (gameLeft >= 1f && timeZone_Zone.zoneAlive == false) {
id = Random.Range(0, 5);
}
return id;
}
或
public void DecideID() {
if (gameLeft >= 1f && timeZone_Zone.zoneAlive == false) {
randID = Random.Range(0, 5);
}
}