我制作了一个附有刚体组件的预制gameObject。每当我从检查员更改原始预制件的质量时,场景中存在的所有实例都会受到影响(该字段不会被覆盖)。但是,当我尝试使用脚本执行相同的操作时,实例的数量保持不变(仅影响主预制件,并且每当我进入播放模式时,它都会保留以前的值!)。该脚本已附加到另一个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
}
}
我不懂初学者。请给我解释一下。
最佳答案
我相信“应用”按钮负责将所有值应用于检查员级别的预制实例。从脚本中,您需要手动进行操作(您没有任何名为“应用”的按钮或方法)。
最好(我认为最有效的方法)是为预制件和
GameObject[] myPrefabInstances = GameObject.FindGameObjectsWithTag("yourTagName").
然后:
foreach (var go in myPrefabInstances)
{
var rb = (Rigidbody) go.GetComponent ("Rigidbody");
rb.mass = 44;
}
关于c# - 通过脚本更改预制实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34105340/