【发布时间】:2019-04-14 00:24:14
【问题描述】:
我想在 Unity C# 中创建一个游戏,玩家可以在其中将所需的无人机作为游戏对象添加到游戏世界中。因此,我制作了一个无人机预制件,稍后在运行时我询问玩家想要拥有的无人机数量(例如 n 个数字)并实例化预制件 n 次。 附加到无人机预制件的脚本称为drone_script。 因此,我有一个drone_script 类作为通用类。这个类有一个属性(我们称之为订阅者),每个无人机应该有不同的唯一值。因此,它在drone_script 通用类中创建为空引用,稍后在运行时,我将对其进行初始化。 在运行时,我从这个类创建 n 个(与无人机游戏对象相同的数字)对象,并为其订阅者属性分配不同的值。
看起来是这样的:
some_class
{
for (int i = 0; i < number_of_Drones; ++i)
{
drones_script[i] = new drone_script();
\\ here I am creating n objects of my general drone_script class
drones_script[i].drone_subscriber = a unique value;
\\ here I am assigning to each of the drone objects' drone_subscriber attribute a different value.
drco = new Vector3((float)0, (float)1, (float)0);
drones[i] = Instantiate(Resources.Load("drone"), drco,
Quaternion.Euler(-90, 0, 90)) as GameObject;
\\I instatiate the drone prefab in unity game world here.
}
}
drone_script
{
public ROSBridgeSubscriber drone_subscriber;
void Start() { \\some code }
void FixedUpdate () { \\some code }
}
我的问题是当无人机游戏对象统一创建时,通用类drone_script 附加到它们,因此它们的订阅者属性为空。但是,我需要将drone_script[i] 对象作为脚本分配给它们,而不是一般的drone_script 本身。因为只有在调用 start 函数之前,每个无人机游戏对象才有其对应的订阅者属性值。 我的想法正确吗? 如果是,我该怎么做?
【问题讨论】: