我也在论坛中查看,他们真正说的是使用GameObject.AddComponent API,但是,这似乎不起作用。 这是我的代码(C#):
GameObject someGameObject = (GameObject)Instantiate(somePrefab, position, rotation);
BlueColour script = someGameObject.AddComponent<BlueColour>();
我运行场景,并且nada,脚本不执行。
我也试过了script.enabled = true;
而没有。
此外,如果我通过“添加组件”按钮从Inspector附加它,它可以正常工作。
帮助? :)请...
谢谢!
Edit1:您要求使用BlueColour.cs脚本:
using UnityEngine;
using System.Collections;
public class BlueColour : MonoBehaviour {
// Use this for initialization
void Start () {
print ("It started!");
}
void Update () {
print("It's updating!");
}
void OnCollisionEnter(Collision collisionInfo)
{
print("Detected collision between " + gameObject.name + " and " + collisionInfo.collider.name);
print("There are " + collisionInfo.contacts.Length + " point(s) of contacts");
print("Their relative velocity is " + collisionInfo.relativeVelocity);
}
public void Yowza()
{
}
}
没有一种方法可以触发/执行。
我还在其后添加了一行来更改材质颜色:
GetComponent<Renderer>().material.color = Color.blue;
这也行不通。通过Inspector一切正常。谢谢!
答案 0 :(得分:2)
确保执行这两行代码。
GameObject someGameObject = (GameObject)Instantiate(somePrefab, position, rotation);
BlueColour script = someGameObject.AddComponent<BlueColour>();
您可以设置Debug.Log()
进行确认。
如果已执行,请确保您的somePrefab
不是
pre-disabled
。您可以在Project
标签中选择预制件进行检查。然后查看名称文本框左侧Inspector
右侧的顶部。有一个小复选框。确保已选中。
或者你可以简单地someGameObject.SetActive(true);