首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选中枚举时显示gameObject的gameObject

选中枚举时显示gameObject的gameObject
EN

Stack Overflow用户
提问于 2020-10-08 10:33:25
回答 1查看 47关注 0票数 0

当gameObject被实例化时,是否可以在检查器中显示它的位置以便可以更改它?我选择要在场景中实例化的gameObject (通过枚举),如何在检查器中声明以显示脚本中的位置,以便用户在实例化后可以自由地更改它?

代码语言:javascript
复制
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
            
        }
EN

回答 1

Stack Overflow用户

发布于 2020-10-08 13:25:44

如果您的主脚本处理实例化gameObject的位置,您可以这样做: GameObject One;Vector3 OnePosition;

代码语言:javascript
复制
private void Update()
{
    One.transform.position = OnePosition;
}

不要忘记设置一个游戏对象:

代码语言:javascript
复制
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       
}

如果您的脚本不操作实例化游戏对象,您可以在场景层次结构面板上找到新的实例化游戏对象,单击它并修改转换位置。

另一种解决方案可以是创建一个自定义检查器来处理向量字段上的更改,并在字段更改时设置实例化的游戏对象位置。它移除更新位置属性。如果这是您想要的,您可以看看文献资料

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64260702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档