所以这就是我想做的:
1)我有一个名为 bloby 的预制件,只是一个包含 Bloby 类脚本的简单球体(稍后会解释)。
2)我需要在屏幕中实例化10个bloby,但是每个bloby都有不同的速度,所以我创建了一个名为Bloby的类:
代码(CSharp):
public class Bloby : MonoBehaviour
{
public float speed;
public GameObject body;
public Bloby(float s, GameObject ga)
{
this.speed = s;
this.body = ga;
}
public void Instant(float xPos, float zPos)
{
GameObject instance = Instantiate(this.body) as GameObject;
instance.transform.position = new Vector3(xPos, 1, zPos);
}
}
Run Code Online (Sandbox Code Playgroud)
3)由于我正在实例化一个游戏对象,因此当我创建一个 Bloby 对象时,我将预制件作为参数传递并实例化。
4)这工作正常,当我调用 Bloby bloby = new Bloby(10, character); 时,我的 Bloby 会在屏幕中实例化。(角色是游戏对象)
5) 奇怪的是,当我的对象被实例化时,Bloby 脚本(附加到预制件)的变量值保持为 speed = 0,即使我在创建它时将其设置为 10 并且主体变量 =无效的。如果我在 Bloby 类上放置 Debug.Log(speed),它会显示 10,但脚本本身的变量值不会改变。 …