//----- params ----- //----- field ----- //----- property ----- //----- method ----- public static string[] OnWillSaveAssets(string[] paths) { if (paths.IsEmpty()) { return(paths); } GameObject[] hierarchyGameObjects = null; foreach (string path in paths) { var atlasTexture = AssetDatabase.LoadMainAssetAtPath(path) as AtlasTexture; if (atlasTexture != null) { // 必要になった時に一回だけ取得して使いまわす. if (hierarchyGameObjects == null) { hierarchyGameObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); } // AtlasTextureImage. UpdateAtlasTextureImage(hierarchyGameObjects, atlasTexture); } } return(paths); }
public static void Reload() { if (!GameText.Exists) { GameText.CreateInstance(); } var gameTextInfo = GameTextLanguage.GameTextInfos.ElementAtOrDefault(GameTextLanguage.Prefs.selection); if (gameTextInfo != null) { GameText.Instance.LoadFromResources(gameTextInfo.AssetPath); } var gameObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); foreach (var gameObject in gameObjects) { var setter = gameObject.GetComponent <GameTextSetter>(); if (setter != null) { setter.ImportText(); } } IsLoaded = true; }
private static void HierarchyChanged() { // 実行中は負荷が高いので実行しない. if (Application.isPlaying) { return; } if (onHierarchyChangedAsObservable != null) { onHierarchyChangedAsObservable.OnNext(Unit.Default); } var createObserver = onCreateAsObservable != null && onCreateAsObservable.HasObservers; var deleteObserver = onDeleteAsObservable != null && onDeleteAsObservable.HasObservers; if (createObserver || deleteObserver) { var nowScene = SceneManager.GetActiveScene(); if (hierarchyObjects != null) { hierarchyObjects = hierarchyObjects.Where(x => !UnityUtility.IsNull(x)).ToArray(); } if (hierarchyObjects == null || hierarchyObjects.IsEmpty() || currentScene != nowScene) { CollectHierarchyObjects(); } else { // Hierarchy上のGameObjectを検索して取得. var objects = UnityEditorUtility.FindAllObjectsInHierarchy(); // キャッシュ済みGameObjectとの差分で新規作成されたGameObjectを発見. var newObjects = objects.Where(x => hierarchyObjects.All(y => x != y)).ToArray(); // 新規作成通知. if (0 < newObjects.Length) { if (onCreateAsObservable != null) { onCreateAsObservable.OnNext(newObjects.ToArray()); } } if (objects.Length < hierarchyObjects.Length) { if (onDeleteAsObservable != null) { onDeleteAsObservable.OnNext(Unit.Default); } } hierarchyObjects = objects; } } }
private static void HierarchyChanged() { // 実行中は負荷が高いので実行しない. if (Application.isPlaying) { return; } if (onHierarchyChangedAsObservable != null) { onHierarchyChangedAsObservable.OnNext(Unit.Default); } var createObserver = onCreateAsObservable != null && onCreateAsObservable.HasObservers; var deleteObserver = onDeleteAsObservable != null && onDeleteAsObservable.HasObservers; if (createObserver || deleteObserver) { var nowScene = SceneManager.GetActiveScene(); // Hierarchy上のGameObjectを検索して取得. hierarchyObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); // シーンが変わっていた場合Hierarchy上のGameObjectをキャッシュ. if (currentScene != nowScene) { markedObjects = hierarchyObjects.Select(x => x.GetInstanceID()).ToArray(); currentScene = nowScene; } // キャッシュ済みGameObjectとの差分で新規作成されたGameObjectを発見. var newObjects = hierarchyObjects.Where(x => !markedObjects.Any(y => y == x.GetInstanceID())).ToArray(); // 新規作成通知. if (0 < newObjects.Length) { if (onCreateAsObservable != null) { onCreateAsObservable.OnNext(newObjects.ToArray()); } } if (hierarchyObjects.Length < markedObjects.Length) { if (onDeleteAsObservable != null) { onDeleteAsObservable.OnNext(Unit.Default); } } markedObjects = hierarchyObjects.Select(x => x.GetInstanceID()).ToArray(); } }
private static void CollectHierarchyObjects() { // 実行中は負荷が高いので実行しない. if (Application.isPlaying) { return; } currentScene = SceneManager.GetSceneAt(0); hierarchyObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); }
public static void Reload() { if (EditorApplication.isPlayingOrWillChangePlaymode) { return; } var textData = TextData.Instance; if (textData == null) { return; } var config = TextDataConfig.Instance; if (config == null) { return; } // 内包テキスト読み込み. var embeddedAsset = LoadTextDataAsset(ContentType.Embedded); textData.LoadEmbedded(embeddedAsset); // 配信テキスト読み込み. if (config != null && config.Distribution.Enable) { var distributionAsset = LoadTextDataAsset(ContentType.Distribution); textData.AddContents(distributionAsset); } // 適用. var gameObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); foreach (var gameObject in gameObjects) { var setter = gameObject.GetComponent <TextSetter>(); if (setter != null) { Reflection.InvokePrivateMethod(setter, "ImportText"); } } IsLoaded = true; }
private static void CollectHierarchyObjects() { // 実行中は負荷が高いので実行しない. if (Application.isPlaying) { return; } var nowScene = SceneManager.GetSceneAt(0); hierarchyObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); markedObjects = hierarchyObjects.Select(x => x.GetInstanceID()).ToArray(); currentScene = nowScene; }
protected override void Load() { pinning = new List <PinnedItem>(); var prefsKey = GetPinnedPrefsKey(); var saveData = ProjectPrefs.Get <List <SaveData> >(prefsKey, null); if (saveData == null) { return; } if (saveData.Any()) { // Hierarchy上のGameObjectを検索して取得. var hierarchyObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); foreach (var data in saveData) { if (data.localIdentifierInFile == -1) { continue; } var targetObject = hierarchyObjects.FirstOrDefault(y => UnityEditorUtility.GetLocalIdentifierInFile(y) == data.localIdentifierInFile) as Object; if (targetObject == null) { continue; } var item = new PinnedItem() { target = targetObject, comment = data.comment, }; pinning.Add(item); } } }
protected override void Load() { currentScene = SceneManager.GetActiveScene(); var pinned = ProjectPrefs.GetString(PinnedPrefsKey); if (string.IsNullOrEmpty(pinned)) { return; } // Hierarchy上のGameObjectを検索して取得. var hierarchyObjects = UnityEditorUtility.FindAllObjectsInHierarchy(); pinnedObject = pinned .Split(',') .Select(x => hierarchyObjects.FirstOrDefault(y => LocalIdentifierInFile.Get(y).ToString() == x) as Object) .Where(x => x != null) .ToList(); UpdatePinnedObjectIds(); }