在运行时将脚本附加到对象不起作用。 unity3d新手。我究竟做错了什么?

时间:2016-10-12 07:16:30

标签: unity3d

我也在论坛中查看,他们真正说的是使用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一切正常。谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 确保执行这两行代码。

    GameObject someGameObject = (GameObject)Instantiate(somePrefab, position, rotation);
    BlueColour script = someGameObject.AddComponent<BlueColour>();
    

    您可以设置Debug.Log()进行确认。

  2. 如果已执行,请确保您的somePrefab不是 pre-disabled。您可以在Project标签中选择预制件进行检查。然后查看名称文本框左侧Inspector右侧的顶部。有一个小复选框。确保已选中

  3. 或者你可以简单地someGameObject.SetActive(true);

  4. enter image description here