예제 #1
0
파일: Tool.cs 프로젝트: Hengle/UnityEditor
        public static bool SaveLayout(string layout_fullpath, GameObject inst)
        {
            string prefab     = LayoutTool.GetPrefabPath(layout_fullpath);
            string tmp_prefab = LayoutTool.GetTmpPrefabPath(prefab);

            PrefabUtility.CreatePrefab(tmp_prefab, inst);
            AssetDatabase.SaveAssets();
            EditorTool.FileWriteable(layout_fullpath);
            File.Copy(EditorTool.GetSystemFullpath(tmp_prefab), layout_fullpath, true);
            FileUtil.DeleteFileOrDirectory(tmp_prefab);
            AssetDatabase.Refresh();

            return(true);
        }
예제 #2
0
파일: Tool.cs 프로젝트: Hengle/UnityEditor
        public static GameObject LoadLayout(string layout_fullpath, bool for_edit)
        {
            string name   = EditorTool.GetFileName(layout_fullpath, false);
            string prefab = LayoutTool.GetPrefabPath(layout_fullpath);

            if (string.IsNullOrEmpty(prefab))
            {
                return(null);
            }

            string tmp_prefab          = LayoutTool.GetTmpPrefabPath(prefab);
            string tmp_prefab_fullname = EditorTool.GetSystemFullpath(tmp_prefab);

            EditorTool.FileWriteable(tmp_prefab_fullname);
            File.Copy(layout_fullpath, tmp_prefab_fullname, true);
            AssetDatabase.Refresh();
            //GameObject tmp_prefab_obj = Resources.LoadAssetAtPath(tmp_prefab, typeof(GameObject)) as GameObject;
#if UNITY_EDITOR
            GameObject tmp_prefab_obj = AssetDatabase.LoadAssetAtPath(tmp_prefab, typeof(GameObject)) as GameObject;
#else
            GameObject tmp_prefab_obj = Resources.Load(Trans2ResourcesPath(tmp_prefab), typeof(GameObject)) as GameObject;
#endif
            if (tmp_prefab_obj == null)
            {
                Debug.LogError("�޷�����Layout�ļ�\"" + layout_fullpath + "\"");
                FileUtil.DeleteFileOrDirectory(tmp_prefab);
                AssetDatabase.Refresh();
                return(null);
            }
            GameObject prefab_obj = Object.Instantiate(tmp_prefab_obj) as GameObject;
            if (for_edit)
            {
                prefab_obj.transform.parent = Root.transform;
            }
            prefab_obj.transform.localPosition = tmp_prefab_obj.transform.position;
            prefab_obj.layer = s_editor_layer;
            prefab_obj.name  = name;
            RemoveInvalidNode(prefab_obj);
            FileUtil.DeleteFileOrDirectory(tmp_prefab);
            AssetDatabase.Refresh();

            return(prefab_obj);
        }