判断预制有更改然后保存预制

  
 var prefab = UnityEditor.PrefabUtility.GetPrefabInstanceHandle(targetGameObject);
if (prefab != null)//判断是否是预制件
    { path = UnityEditor.PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(prefab); }
else
    { Logger.LogError("此物品没有预制:" + targetGameObject); }


下面的方法已经先判断了是预制件
                var currentPrefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage();
                if (currentPrefabStage != null)//预制模式下
                {
                    if (currentPrefabStage.scene.isDirty)//预制场景有修改
                    {
                        if (EditorUtility.DisplayDialog("温馨提示", "是否先保存保存预制!", "确定", "取消"))
                        {
                            PrefabUtility.SaveAsPrefabAsset(currentPrefabStage.prefabContentsRoot, currentPrefabStage.prefabAssetPath);
                            KeyBdEvent.SaveKey();//保存预制加ctrl+s的保存,由于不晓得如何保存预制场景
                            return;
                        }
                    }
                }
                else
                {
                    var propertyModifications = PrefabUtility.GetObjectOverrides(referenceCollector.gameObject);
                    if (propertyModifications.Count > 0)//预制是否有更改
                    {
                        if (EditorUtility.DisplayDialog("温馨提示", "是否先保存保存预制!", "确定", "取消"))
                        {
                            PrefabUtility.ApplyPrefabInstance(referenceCollector.gameObject, InteractionMode.AutomatedAction);//保存预制修改
                            return;
                        }                   
                    }                  
                }

//模拟发送按钮
public static class KeyBdEvent
{
    [DllImport("user32.dll", EntryPoint = "keybd_event")]
    public static extern void keybd_event(
            byte bVk,            //虚拟键值 对应按键的ascll码十进制值  
            byte bScan,          //0
            int dwFlags,         //0 为按下,1按住,2为释放 
            int dwExtraInfo      //0
        );
    public static void SaveKey()
    {
        keybd_event(17, 0, 0, 0);
        //keybd_event(17, 0, 1, 0);//按住ctrl

        keybd_event(83, 0, 0, 0);//按下s

        keybd_event(17, 0, 2, 0);//抬起ctrl
        keybd_event(83, 0, 2, 0);//抬起s
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值