通过脚本更改预制实例

时间:2015-12-05 13:17:12

标签: c# unity3d game-engine unity5

我制作了一个附有刚体组件的预制游戏对象。 每当我从检查器更改原始预制件的质量时,场景中存在的所有实例都会受到影响(该字段不会被覆盖)。但是当我尝试使用脚本做同样的事情时,实例的质量保持不变(只有主预制件受到影响,每次进入播放模式时,它都会保留以前的值!)。该脚本附加到另一个gameObject,如下所示:

using UnityEngine;
using System.Collections;

public class CubeScript : MonoBehaviour {

    public GameObject largeCube; // dragged the original prefab in the inspector
    private Rigidbody rb;
    // Use this for initialization
    void Start () 
    {

        rb = (Rigidbody) largeCube.GetComponent ("Rigidbody");
        rb.mass = 44; // this is not changing the instances, rather only the main prefab. Note that the mass is not overridden

    }

}

作为初学者,我不明白。请向我解释一下。

1 个答案:

答案 0 :(得分:1)

我相信"申请"按钮负责将所有值应用于检查员级别的预制件实例。从脚本中,您需要手动完成(您没有任何名为&#34的按钮或方法;应用")。

我认为最好的(也是最有效的)是为预制件创建标签和使用

GameObject[] myPrefabInstances = GameObject.FindGameObjectsWithTag("yourTagName"). 

然后:

foreach (var go in myPrefabInstances) 
{
        var rb = (Rigidbody) go.GetComponent ("Rigidbody");
        rb.mass = 44;
}