假如想在Prefab保存的时候做点什么事情的话 ,如下图所示,点击Apply得到监听事件。
1 2 3 4 5 6 7 8 9 10 11 |
[InitializeOnLoadMethod] static void StartInitializeOnLoadMethod () { PrefabUtility.prefabInstanceUpdated = delegate(GameObject instance) { //prefab保存的路径 Debug.Log(AssetDatabase.GetAssetPath(PrefabUtility.GetPrefabParent(instance))); }; } |
今天脑洞打开。利用这个接口还能干一点事情。 比如 美术修改了prefab没有保存的然后上传svn发现别人什么都更新不到。 这里我可以当美术apply的时候帮他自动保存,于是有了下面的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[InitializeOnLoadMethod] static void Start() { PrefabUtility.prefabInstanceUpdated = delegate { GameObject go =null; if(Selection.activeTransform) { go = Selection.activeGameObject; } AssetDatabase.SaveAssets(); if(go) { EditorApplication.delayCall = delegate { Selection.activeGameObject =go; }; } }; } |
- 本文固定链接: https://www.xuanyusong.com/archives/3836
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
您好,请问有办法能让某个prefab变dirty以后不允许保存回退到原状态吗
fbx文件 代码修改后有办法用代码apply吗
fbx 可以用python脚本SDK重写。 我们有用它的sdk复写, 删除过color 啥的
这个有办法拿到 prefab 被保存之前的那个状态么?即在手动apply之前拿到 gameobject 好在保存前做点别的。
unity暂时没有这个状态
你好啊,我的prefabInstanceUpdated 回调,执行两遍,请问如何解决呢?
升级unity版本。
好的。谢谢您啊。
有没有apply的代码?相当于 Apply Changes To Prefab
unity有这个api 。 PrefabUtility.ReplacePrefab
这样会凡是修改一下就报错吧??
对,修改一下就会保存, 不过这里不是保存场景 只是保存资源 速度还可以。。
那如果想在保存之前监听呢?
你可以试试 OnWillSaveAssets
这个脚本是放在某Editor文件夹下还是每个prefab上都要挂一个?
editor下面
[挤眼]
很不错!!!
谢谢 [给力]