首页 > 解决方案 > 如何动态更新 Unity 预制件?

问题描述

1)如何找到预制件的高度?在下面的代码中,我想让 232 值动态化,以便将来可以安全地更新我的预制件。

2) 如何在渲染的预制件中获取对 Text 对象的引用?

Player[] players = JsonHelper.getJsonArray<Player>(www.downloadHandler.text);

float nextY = 0;

for (int i = 0; i < players.Length; i++)
{
    Player player = players[i];

    Vector3 pos = new Vector3(0, -nextY, spawnPoint.position.z);

    GameObject spawnedItem = Instantiate(listViewItem, pos, spawnPoint.rotation);

    nextY += 232;

    // spawnedItem.?  <- need to put a Player name into a Text in here

    spawnedItem.transform.SetParent(spawnPoint, false);
}

标签: unity3d

解决方案


您可以创建 ac# 脚本,作为您的预制件和其他组件之间的接口,例如:

public class MyCustomPrefab : MonoBehaviour
{

    [SerializedField] private float height;
    [SerializedField] private TextMeshProUGUI text;

    // other variable, methods, anything you want

}

然后,不要将其实例化为 GameObject,而是使用您的 Type :

MyCustomPrefab prefab = Instantiate(.....);

// Then you can access/use any variable/method that you want
nextY += prefab.height;
prefab.text = .....;


推荐阅读