Unity3d使用脚本自如编辑GameObject

xiaoxiao2021-02-28  60

Unity3d使用脚本自如编辑GameObject

在工作中,发现想对Scene内的Object进行程序化编辑,例如当一个父对象的中心感官上并不是这个物体的中心时,我们想对所有的子对象的transform进行平移,也就是(x,y,z)加上一个vector3的offset,此时如果手动平移工作量巨大,使用脚本快速而正确。

经过查阅资料后发现,这类脚本只能当做一个插件来执行,无法挂载到某个具体的GameObject上在playmode下执行。而这类插件的存在和使用形式就是在top menu里增加一个自定义的菜单,点一次则执行一次,完全与我的目标契合。


步骤一

首先我们在Project视图里,新建一个 “Editor” 目录(名字一定要准确),然后添加一个C#脚本。

步骤二

在脚本中写入:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class Shift { [MenuItem("Custom/shift")] static void shift(){ // find your obejct GameObject go = GameObejct.Find("name"); // do something Transform[] tfs = go.GetComponentsInChildren<Transform>(); foreach (Transform tf in tfs){ tf.localPosition = tf.localPosition + offset; } } }

步骤三

保存代码,生成 -->生成Project.Editor,编译成功后回到Unity,即可发现top menu上多了一个custom菜单,点击shift即可执行上述代码!Nice!有了这个东西,再也不用跪着编辑Object了!

参考: http://www.cnblogs.com/kenkofox/archive/2013/07/14/3189705.html

转载请注明原文地址: https://www.6miu.com/read-33036.html

最新回复(0)