假如想在Prefab保存的时候做点什么事情的话 ,如下图所示,点击Apply得到监听事件。
[InitializeOnLoadMethod]
static void StartInitializeOnLoadMethod ()
{
PrefabUtility.prefabInstanceUpdated = delegate(GameObject instance)
{
//prefab保存的路径
Debug.Log(AssetDatabase.GetAssetPath(PrefabUtility.GetPrefabParent(instance)));
};
}
今天脑洞打开。利用这个接口还能干一点事情。 比如 美术修改了prefab没有保存的然后上传svn发现别人什么都更新不到。 这里我可以当美术apply的时候帮他自动保存,于是有了下面的代码。
[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下面
[挤眼]
很不错!!!
谢谢 [给力]