[Unity 확장] 등급 제도에 사용된 모든 스크립트를 보여주는 EDITOR Window를 만들었습니다.
9711 단어 Unity 확장UnityEditorUnity
개시하다
등급 제도에서 어떤 스크립트를 사용했는지 확인하고 싶어서 스크립트를 일람하는 편집 확장을 시도했다.
컨디션
Unity 5.5.0f3
Windows 10
제작에 관한 것
첨부된 모든 스크립트 목록을 표시할 수 있는 창을 만들었습니다.
소스 코드
프로젝트 내의 EDITOR 폴더 아래에 다음 스크립트를 넣을 때 EDITORWindow를 사용할 수 있습니다.
HierarchyScriptViewerWindow.csnamespace HierarchyScriptViewer
{
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;
/// <summary>
/// シーン内でアタッチされているすべてのスクリプトを表示するEditorWindow
/// </summary>
public class HierarchyScriptViewerWindow : EditorWindow
{
Vector2 scrollPosition = Vector2.zero;
Type[] componentTypes = new Type[0];
MonoScript[] scripts = new MonoScript[0];
[MenuItem("Tools/Hierarchy Script Viewer")]
static void Open()
{
GetWindow<HierarchyScriptViewerWindow>();
}
void OnGUI()
{
GUILayout.Label("ヒエラルキー上で使用されている全スクリプトを表示します");
GUILayout.Space(2f);
// ボタン表示
if (GUILayout.Button("スクリプト一覧 表示"))
{
this.scripts = this.GetScripts().ToArray();
}
// スクリプト一覧表示
this.scrollPosition = EditorGUILayout.BeginScrollView(this.scrollPosition);
foreach (var script in this.scripts)
{
if (script == null) { continue; } // nullチェック
EditorGUILayout.ObjectField(script, typeof(MonoScript), false);
}
EditorGUILayout.EndScrollView();
}
/// <summary>
/// シーン内でアタッチされているすべての自作スクリプトを取得する
/// </summary>
private IEnumerable<MonoScript> GetScripts()
{
var gameObjects = (GameObject[])UnityEngine.Object.FindObjectsOfType(typeof(GameObject)); // シーン内の全てのGameObject
var monoScripts = Resources.FindObjectsOfTypeAll<MonoScript>(); // プロジェクト内の全てのスクリプト
foreach (var monoScript in monoScripts)
{
var classType = monoScript.GetClass();
if (classType == null) { continue; }
if (classType.Module.Name != "Assembly-CSharp.dll") { continue; } // 自作クラスかどうか
if (!classType.IsSubclassOf(typeof(MonoBehaviour))) { continue; } // MonoBehaviour継承クラスかどうか
if (gameObjects.Any(go => go.GetComponent(classType) != null)) // アタッチされているGameObjectが存在するか
{
yield return monoScript;
}
}
}
}
}
사용
메뉴 상단에서 "Tools/Hierarchy Script Viewer"를 선택하면 창이 열립니다.
단추는 등급 제도에 사용된 스크립트 목록을 표시합니다 (완성)
Reference
이 문제에 관하여([Unity 확장] 등급 제도에 사용된 모든 스크립트를 보여주는 EDITOR Window를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/03f279b161aa95026181
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Unity 5.5.0f3
Windows 10
제작에 관한 것
첨부된 모든 스크립트 목록을 표시할 수 있는 창을 만들었습니다.
소스 코드
프로젝트 내의 EDITOR 폴더 아래에 다음 스크립트를 넣을 때 EDITORWindow를 사용할 수 있습니다.
HierarchyScriptViewerWindow.csnamespace HierarchyScriptViewer
{
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;
/// <summary>
/// シーン内でアタッチされているすべてのスクリプトを表示するEditorWindow
/// </summary>
public class HierarchyScriptViewerWindow : EditorWindow
{
Vector2 scrollPosition = Vector2.zero;
Type[] componentTypes = new Type[0];
MonoScript[] scripts = new MonoScript[0];
[MenuItem("Tools/Hierarchy Script Viewer")]
static void Open()
{
GetWindow<HierarchyScriptViewerWindow>();
}
void OnGUI()
{
GUILayout.Label("ヒエラルキー上で使用されている全スクリプトを表示します");
GUILayout.Space(2f);
// ボタン表示
if (GUILayout.Button("スクリプト一覧 表示"))
{
this.scripts = this.GetScripts().ToArray();
}
// スクリプト一覧表示
this.scrollPosition = EditorGUILayout.BeginScrollView(this.scrollPosition);
foreach (var script in this.scripts)
{
if (script == null) { continue; } // nullチェック
EditorGUILayout.ObjectField(script, typeof(MonoScript), false);
}
EditorGUILayout.EndScrollView();
}
/// <summary>
/// シーン内でアタッチされているすべての自作スクリプトを取得する
/// </summary>
private IEnumerable<MonoScript> GetScripts()
{
var gameObjects = (GameObject[])UnityEngine.Object.FindObjectsOfType(typeof(GameObject)); // シーン内の全てのGameObject
var monoScripts = Resources.FindObjectsOfTypeAll<MonoScript>(); // プロジェクト内の全てのスクリプト
foreach (var monoScript in monoScripts)
{
var classType = monoScript.GetClass();
if (classType == null) { continue; }
if (classType.Module.Name != "Assembly-CSharp.dll") { continue; } // 自作クラスかどうか
if (!classType.IsSubclassOf(typeof(MonoBehaviour))) { continue; } // MonoBehaviour継承クラスかどうか
if (gameObjects.Any(go => go.GetComponent(classType) != null)) // アタッチされているGameObjectが存在するか
{
yield return monoScript;
}
}
}
}
}
사용
메뉴 상단에서 "Tools/Hierarchy Script Viewer"를 선택하면 창이 열립니다.
단추는 등급 제도에 사용된 스크립트 목록을 표시합니다 (완성)
Reference
이 문제에 관하여([Unity 확장] 등급 제도에 사용된 모든 스크립트를 보여주는 EDITOR Window를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/03f279b161aa95026181
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
프로젝트 내의 EDITOR 폴더 아래에 다음 스크립트를 넣을 때 EDITORWindow를 사용할 수 있습니다.
HierarchyScriptViewerWindow.cs
namespace HierarchyScriptViewer
{
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;
/// <summary>
/// シーン内でアタッチされているすべてのスクリプトを表示するEditorWindow
/// </summary>
public class HierarchyScriptViewerWindow : EditorWindow
{
Vector2 scrollPosition = Vector2.zero;
Type[] componentTypes = new Type[0];
MonoScript[] scripts = new MonoScript[0];
[MenuItem("Tools/Hierarchy Script Viewer")]
static void Open()
{
GetWindow<HierarchyScriptViewerWindow>();
}
void OnGUI()
{
GUILayout.Label("ヒエラルキー上で使用されている全スクリプトを表示します");
GUILayout.Space(2f);
// ボタン表示
if (GUILayout.Button("スクリプト一覧 表示"))
{
this.scripts = this.GetScripts().ToArray();
}
// スクリプト一覧表示
this.scrollPosition = EditorGUILayout.BeginScrollView(this.scrollPosition);
foreach (var script in this.scripts)
{
if (script == null) { continue; } // nullチェック
EditorGUILayout.ObjectField(script, typeof(MonoScript), false);
}
EditorGUILayout.EndScrollView();
}
/// <summary>
/// シーン内でアタッチされているすべての自作スクリプトを取得する
/// </summary>
private IEnumerable<MonoScript> GetScripts()
{
var gameObjects = (GameObject[])UnityEngine.Object.FindObjectsOfType(typeof(GameObject)); // シーン内の全てのGameObject
var monoScripts = Resources.FindObjectsOfTypeAll<MonoScript>(); // プロジェクト内の全てのスクリプト
foreach (var monoScript in monoScripts)
{
var classType = monoScript.GetClass();
if (classType == null) { continue; }
if (classType.Module.Name != "Assembly-CSharp.dll") { continue; } // 自作クラスかどうか
if (!classType.IsSubclassOf(typeof(MonoBehaviour))) { continue; } // MonoBehaviour継承クラスかどうか
if (gameObjects.Any(go => go.GetComponent(classType) != null)) // アタッチされているGameObjectが存在するか
{
yield return monoScript;
}
}
}
}
}
사용
메뉴 상단에서 "Tools/Hierarchy Script Viewer"를 선택하면 창이 열립니다.
단추는 등급 제도에 사용된 스크립트 목록을 표시합니다 (완성)
Reference
이 문제에 관하여([Unity 확장] 등급 제도에 사용된 모든 스크립트를 보여주는 EDITOR Window를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/03f279b161aa95026181
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Unity 확장] 등급 제도에 사용된 모든 스크립트를 보여주는 EDITOR Window를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r-ngtm/items/03f279b161aa95026181텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)