c# - 选择枚举时显示游戏对象的 Vector3
问题描述
实例化时是否可以在检查器中显示游戏对象的位置以便可以更改它?我正在选择要在场景中实例化的游戏对象(通过枚举),如何在检查器中声明以显示脚本中的位置,以便用户在实例化后可以自由更改它?
public enum GOs {
One,
Two
}
public GOs go= GOs.Two;
public void CreateGameObject () {
if (go== GOs.One) {
GameObject One_Prefab = UnityEditor.AssetDatabase.LoadAssetAtPath ("Resources/1.prefab", typeof (GameObject)) as GameObject;
GameObject One = (GameObject) GameObject.Instantiate (One_Prefab, Vector3.zero, Quaternion.identity);
One.name = One_Prefab.name;
One.transform.parent = this.transform;
One.GetComponent<RectTransform>().localPosition = new Vector3 (0, 0, 0); //declare this as public so that it can be changed by the user
}
解决方案
如果您的主脚本处理实例化游戏对象的位置,您可以执行以下操作:游戏对象一;Vector3 一个位置;
private void Update()
{
One.transform.position = OnePosition;
}
不要忘记设置 One 游戏对象:
public void CreateGameObject ()
{
if (go== GOs.One) {
GameObject One_Prefab = UnityEditor.AssetDatabase.LoadAssetAtPath ("Resources/1.prefab", typeof (GameObject)) as GameObject;
One = (GameObject) GameObject.Instantiate (One_Prefab, Vector3.zero, Quaternion.identity);
One.name = One_Prefab.name;
One.transform.parent = this.transform;
One.GetComponent<RectTransform>().localPosition = new Vector3 (0, 0, 0); //declare this as public so that it can be changed by the user
}
如果您的脚本不操作您的实例化游戏对象,您可以在场景层次结构面板上找到新的实例化游戏对象,单击它并修改变换位置。
另一种解决方案是创建一个自定义检查器来处理 Vector 字段的更改,并在字段更改时设置实例化游戏对象的位置。它删除了更新位置属性。如果这是您想要的,您可以查看文档。
推荐阅读
- javascript - 从嵌入式 React 组件添加到 WooCommerce 中的购物车
- selenium - 如何使用 selenium 选择 phpmyadmin sql 查询框并向其发送值?
- java - 如何覆盖方法但仍使用 Java 中的变量?
- sql - 存储过程中 return 关键字的实际目的是什么?
- java - 在多线程中使用图形
- php - php具有相同键的多个数组
- docker - 最大化jupyterhub pods资源分配的最佳方法是什么
- android - 使用android客户端在本地网络中查找服务器IP的最佳方法
- sql - Teradata 16 中的 XMLAGG 等效项
- http - 如何在 Flutter 中使用 http 进行摘要认证?