public override void OnInspectorGUI() { if (_info == null) { _info = (CVRAssetInfo)target; } EditorGUILayout.HelpBox(CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_HEADER_INFORMATION"), MessageType.Info); if (!string.IsNullOrEmpty(_info.guid)) { EditorGUILayout.HelpBox(CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_GUID_LABEL") + _info.guid, MessageType.Info); if (GUILayout.Button(CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_DETACH_BUTTON"))) { bool detach = EditorUtility.DisplayDialog( CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_DETACH_BUTTON_DIALOG_TITLE"), CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_DETACH_BUTTON_DIALOG_BODY"), CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_DETACH_BUTTON_DIALOG_ACCEPT"), CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_DETACH_BUTTON_DIALOG_DENY")); if (detach) { DetachGuid(); } } } else { _newGuid = EditorGUILayout.TextField(CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_ATTACH_LABEL"), _newGuid); EditorGUILayout.HelpBox(CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_ATTACH_INFO"), MessageType.Warning); if (GUILayout.Button(CCKLocalizationProvider.GetLocalizedText("ABI_UI_ASSET_INFO_ATTACH_BUTTON"))) { ReattachGuid(_newGuid); } } }
public static void BuildAndUploadMapAsset(Scene scene, GameObject descriptor) { SetupNetworkUUIDs(); EditorSceneManager.MarkSceneDirty(scene); EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene()); CVRAssetInfo info = descriptor.GetComponent <CVRAssetInfo>(); if (string.IsNullOrEmpty(info.guid)) { info.guid = Guid.NewGuid().ToString(); } PrefabUtility.SaveAsPrefabAsset(descriptor, "Assets/ABI.CCK/Resources/Cache/_CVRWorld.prefab"); AssetBundleBuild assetBundleBuild = new AssetBundleBuild(); assetBundleBuild.assetNames = new[] { scene.path }; assetBundleBuild.assetBundleName = "bundle.cvrworld"; BuildPipeline.BuildAssetBundles(Application.persistentDataPath, new[] { assetBundleBuild }, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget); AssetDatabase.Refresh(); EditorPrefs.SetBool("m_ABI_isBuilding", true); EditorApplication.isPlaying = true; }
public static void BuildAndUploadSpawnable(GameObject s) { GameObject sCopy = null; var origInfo = s.GetComponent <CVRAssetInfo>(); try { sCopy = GameObject.Instantiate(s); PrefabUtility.UnpackPrefabInstance(sCopy, PrefabUnpackMode.Completely, InteractionMode.UserAction); Debug.Log("[CCK:BuildUtility] To prevent problems, the prefab has been unpacked. Your game object is no longer linked to the prefab instance."); } catch { Debug.Log("[CCK:BuildUtility] Object is not a prefab. No need to unpack."); } CVRAssetInfo info = sCopy.GetComponent <CVRAssetInfo>(); if (string.IsNullOrEmpty(info.guid)) { info.guid = Guid.NewGuid().ToString(); origInfo.guid = info.guid; try { PrefabUtility.ApplyPrefabInstance(s, InteractionMode.UserAction); } catch { Debug.Log("[CCK:BuildUtility] Object is not a prefab. No need to Apply To Instance."); } } EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene()); PrefabUtility.SaveAsPrefabAsset(sCopy, "Assets/ABI.CCK/Resources/Cache/_CVRSpawnable.prefab"); GameObject.DestroyImmediate(sCopy); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene()); AssetBundleBuild assetBundleBuild = new AssetBundleBuild(); assetBundleBuild.assetNames = new[] { "Assets/ABI.CCK/Resources/Cache/_CVRSpawnable.prefab" }; assetBundleBuild.assetBundleName = "bundle.cvrprop"; BuildPipeline.BuildAssetBundles(Application.persistentDataPath, new[] { assetBundleBuild }, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget); AssetDatabase.Refresh(); EditorPrefs.SetBool("m_ABI_isBuilding", true); EditorApplication.isPlaying = true; }