unity3d - 如何动态更新 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);
}
解决方案
您可以创建 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 = .....;
推荐阅读
- elasticsearch - Elasticsearch 连接被拒绝(拨号 tcp 172.20.0.6:9200 ) - Articulate v0.21.2 发布
- svg - SVG尺寸控制
- google-cloud-firestore - Firestore - 在请求但未找到文档或读取过期文档时触发?
- python-3.x - AstroPy 获取当前位置的恒星时间
- c - 比较字符串中的 N 个字节
- ios - UITableViewCell 和 UIImageView 里面的动态高度
- mysql - MySQL 未在 XAMPP 中启动(错误:MySQL 意外关闭...)
- mysql - 对 ID 相似的同一列中的值求和
- cassandra - Cassandra 删除/更新一行并获取其先前的值
- python - 对于在 python3 中包含范围的循环