Unity骚操作ContextMenu

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/leemu0822/article/details/100151845

ContextMenu的作用到底是干嘛的呢,我大体讲一下,就是用来方便在编辑器不运行的状态下进行调试,看看自己写的代码的效果,但是有一个骚操作是很多人不知道的,而且这个骚操作对我们日常编辑场景有很大的作用,今天我们就来讲一下这个骚操作,为什么会想到这个操作呢,其实是源于昨天我们美术不细心,在摆放场景的时候,把上千个物体的坐标都弄错了,具体我就不说了,但是我们要解决的就是把上千个物体的子物体的坐标复制到父物体,然后把子物体坐标归零。由于我们每个物体的坐标都是不一样的,不可能选中全部操作的,这时候我们ContextMenu的作用就来了,下面我写一个简单的例子:

   [ContextMenu("生成物体")]
    public void SetLocation()
    {
        for (int i = 0; i < 50; i++)
        {
            GameObject go = Instantiate(cube,new Vector3(i,0,i),Quaternion.identity);
            go.transform.parent = transform;
            float t = Random.Range(0, 50);
            GameObject child = Instantiate(cube, new Vector3(t, 0, t), Quaternion.identity);
            child.transform.parent = go.transform;

        }
    }

我们先通过contextMenu生成一堆物体,看看效果:

我们直接生成物体,注意:我们并没有运行unity

然后,我们把父物体和子物体的坐标修改一下:

  [ContextMenu("坐标修改")]
    public void ChangePos()
    {
        for (int i = 0; i < transform.childCount; i++)
        {
            transform.GetChild(i).position = transform.GetChild(i).GetChild(0).position;
            transform.GetChild(i).GetChild(0).position = Vector3.zero;
        }
    }

看看效果,修改前:

修改后:

扫描二维码关注公众号,回复: 7603982 查看本文章

好了,你以为这就完成了吗?接下来才是最关键的一步,我们保存一下,然后重新打开场景,你会发现我们刚才做的操作生成的东西和交互的坐标全部没了:

那么怎么解决这个问题呢,其实很简单,做进行完contextMenu的操作之后,找到那个脚本,把脚本的√取消掉,然后保存就行了:

是不是很屌呢?其实我们可以利用这个来做一下重复性的操作,例如批量赋予材质啊,批量修改位置啊等等

如果你觉得这篇文章对你有用,你可以关注我,或者关注我的公众号,谢谢:

猜你喜欢

转载自blog.csdn.net/leemu0822/article/details/100151845
今日推荐