C# 将GameObject设置为脚本';什么是公共变量?

C# 将GameObject设置为脚本';什么是公共变量?,c#,unity3d,gameobject,C#,Unity3d,Gameobject,我试图在脚本中做出决定,如果我得到一个值1,然后运行特定的游戏对象,该对象是(PopulationGenerator人口引擎资产)。我的场景中有3个PopulationGenerator,但我无法在代码中将它们中的任何一个实际分配给PopulationGenerator变量 唯一的方法是从unity GUI中脚本的侧菜单拖放游戏对象 代码如下: public PopulationGenerator generate1; generat1.totalToSpawn = Convert.ToInt

我试图在脚本中做出决定,如果我得到一个值1,然后运行特定的游戏对象,该对象是(
PopulationGenerator
人口引擎资产)。我的场景中有3个PopulationGenerator,但我无法在代码中将它们中的任何一个实际分配给
PopulationGenerator
变量

唯一的方法是从unity GUI中脚本的侧菜单拖放游戏对象

代码如下:

public PopulationGenerator generate1;

generat1.totalToSpawn = Convert.ToInt32(number) - 5;
我可以在场景中设置一个人口生成器,例如

if (value == 1)
    generate1 = gameobject.name("generator1");
else if (value == 2)
    generate1 = gameobject.name("generator2");
...
是否有任何方法可以将任何类型的游戏对象设置为代码中的变量?
谢谢。

您可以这样做:

generate1 = GameObject.Find("nameOfGenerator").GetComponent<PopulationGenerator>();
generate1=GameObject.Find(“generator的名称”).GetComponent();

generate1.totalToSpawn=Convert.ToInt32(数字)-5你能保证“数字”总是允许转换成整数吗?如果有人输入字符串会发生什么?使用Int32.TryParse()
GameObject.Find(name)
?虽然您的字段类型为
PopulationGenerator
,它是游戏对象的一个组件,所以您也需要
GetComponent()
。您可以改为`if(value