[Unity 확장] 구성 요소의 ON/OFF 콤보 상자를 등급 제도에 표시하는 편집 확장을 시도해 봤습니다.
11602 단어 Unity 확장UnityEditorUnity
개시하다
등급 제도에서 구성 요소의 ON/OFF 콤보 상자를 편집하여 확장해 보십시오.
Mask 구성 요소의 On/OFF 클래스 변경 예
창조적 계기
개체 어셈블리의 ON/OFF를 변경하려는 경우
객체 클릭-> Inspector 창에서 구성 요소 찾기 및 확인란을 클릭
이런 절차는 필요한 것이니 좀 번거롭다.
"등급 제도에서 구성 요소를 직접 열거나 닫을 수 있다면 비교적 수월하지 않을까요?"
그래서 해봤어요.
컨디션
Unity 버전: 5.6.1f1
OS : Windows 10
소스 코드
Unity 항목 내에 Editor 폴더를 만들고 다음 스크립트를 Editor 폴더에 넣습니다.
HierarchyComponentToggler.csnamespace HierarchyComponentToggler
{
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
/// <summary>
/// HierachyにコンポーネントActiveチェックボックスを表示するEditorWindow
/// </summary>
public class HierarchyComponentToggler : EditorWindow
{
private const int WIDTH = 18;
[SerializeField] private string componentName = "";
static private string _componentName = "";
[MenuItem("Tools/Hierarchy Component Toggler")]
static void Open()
{
GetWindow<HierarchyComponentToggler>();
}
void OnDestroy()
{
_componentName = ""; // リセット
}
private void OnGUI()
{
EditorGUILayout.LabelField("指定したコンポーネントのActiveチェックボックスをHierarchyに表示します");
EditorGUI.BeginChangeCheck();
_componentName = this.componentName;
this.componentName = EditorGUILayout.TextField(_componentName);
if (EditorGUI.EndChangeCheck())
{
EditorApplication.delayCall += () =>
{
EditorApplication.RepaintHierarchyWindow();
};
}
}
[InitializeOnLoadMethod]
private static void Initialize()
{
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI;
}
private static void HierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
{
if (!IsOpen()) { return; }
var go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
if (go == null) { return; }
var component = go.GetComponent(_componentName);
if (component == null) { return; }
EditorGUI.BeginChangeCheck();
var enabledProperty = component.GetType().GetProperties().FirstOrDefault(p => p.Name == "enabled");
if (enabledProperty == null) { return; }
var rect = selectionRect;
rect.x = rect.xMax - WIDTH;
rect.width = WIDTH;
bool enabled = EditorGUI.Toggle(rect, (bool)enabledProperty.GetValue(component, null)); // ON/OFFアクティブボックスを表示
if (EditorGUI.EndChangeCheck())
{
enabledProperty.SetValue(component, enabled, null);
EditorSceneManager.MarkSceneDirty(go.scene); // シーン変更フラグ ON
}
}
private static bool IsOpen()
{
var windows = Resources.FindObjectsOfTypeAll<HierarchyComponentToggler>();
return windows != null && windows.Length > 0;
}
}
}
UDIO 프로세스가 포함되지 않았습니다.
사용법
메뉴에서 Tools/Hierrarchy Componente Togler를 클릭하십시오.
클릭하면 창이 열리고 ON/OFF에 대한 구성 요소 이름만 입력하면 됩니다
(끝)
Reference
이 문제에 관하여([Unity 확장] 구성 요소의 ON/OFF 콤보 상자를 등급 제도에 표시하는 편집 확장을 시도해 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/9856e4341d0f43455b36
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
개체 어셈블리의 ON/OFF를 변경하려는 경우
객체 클릭-> Inspector 창에서 구성 요소 찾기 및 확인란을 클릭
이런 절차는 필요한 것이니 좀 번거롭다.
"등급 제도에서 구성 요소를 직접 열거나 닫을 수 있다면 비교적 수월하지 않을까요?"
그래서 해봤어요.
컨디션
Unity 버전: 5.6.1f1
OS : Windows 10
소스 코드
Unity 항목 내에 Editor 폴더를 만들고 다음 스크립트를 Editor 폴더에 넣습니다.
HierarchyComponentToggler.csnamespace HierarchyComponentToggler
{
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
/// <summary>
/// HierachyにコンポーネントActiveチェックボックスを表示するEditorWindow
/// </summary>
public class HierarchyComponentToggler : EditorWindow
{
private const int WIDTH = 18;
[SerializeField] private string componentName = "";
static private string _componentName = "";
[MenuItem("Tools/Hierarchy Component Toggler")]
static void Open()
{
GetWindow<HierarchyComponentToggler>();
}
void OnDestroy()
{
_componentName = ""; // リセット
}
private void OnGUI()
{
EditorGUILayout.LabelField("指定したコンポーネントのActiveチェックボックスをHierarchyに表示します");
EditorGUI.BeginChangeCheck();
_componentName = this.componentName;
this.componentName = EditorGUILayout.TextField(_componentName);
if (EditorGUI.EndChangeCheck())
{
EditorApplication.delayCall += () =>
{
EditorApplication.RepaintHierarchyWindow();
};
}
}
[InitializeOnLoadMethod]
private static void Initialize()
{
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI;
}
private static void HierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
{
if (!IsOpen()) { return; }
var go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
if (go == null) { return; }
var component = go.GetComponent(_componentName);
if (component == null) { return; }
EditorGUI.BeginChangeCheck();
var enabledProperty = component.GetType().GetProperties().FirstOrDefault(p => p.Name == "enabled");
if (enabledProperty == null) { return; }
var rect = selectionRect;
rect.x = rect.xMax - WIDTH;
rect.width = WIDTH;
bool enabled = EditorGUI.Toggle(rect, (bool)enabledProperty.GetValue(component, null)); // ON/OFFアクティブボックスを表示
if (EditorGUI.EndChangeCheck())
{
enabledProperty.SetValue(component, enabled, null);
EditorSceneManager.MarkSceneDirty(go.scene); // シーン変更フラグ ON
}
}
private static bool IsOpen()
{
var windows = Resources.FindObjectsOfTypeAll<HierarchyComponentToggler>();
return windows != null && windows.Length > 0;
}
}
}
UDIO 프로세스가 포함되지 않았습니다.
사용법
메뉴에서 Tools/Hierrarchy Componente Togler를 클릭하십시오.
클릭하면 창이 열리고 ON/OFF에 대한 구성 요소 이름만 입력하면 됩니다
(끝)
Reference
이 문제에 관하여([Unity 확장] 구성 요소의 ON/OFF 콤보 상자를 등급 제도에 표시하는 편집 확장을 시도해 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/9856e4341d0f43455b36
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Unity 항목 내에 Editor 폴더를 만들고 다음 스크립트를 Editor 폴더에 넣습니다.
HierarchyComponentToggler.cs
namespace HierarchyComponentToggler
{
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
/// <summary>
/// HierachyにコンポーネントActiveチェックボックスを表示するEditorWindow
/// </summary>
public class HierarchyComponentToggler : EditorWindow
{
private const int WIDTH = 18;
[SerializeField] private string componentName = "";
static private string _componentName = "";
[MenuItem("Tools/Hierarchy Component Toggler")]
static void Open()
{
GetWindow<HierarchyComponentToggler>();
}
void OnDestroy()
{
_componentName = ""; // リセット
}
private void OnGUI()
{
EditorGUILayout.LabelField("指定したコンポーネントのActiveチェックボックスをHierarchyに表示します");
EditorGUI.BeginChangeCheck();
_componentName = this.componentName;
this.componentName = EditorGUILayout.TextField(_componentName);
if (EditorGUI.EndChangeCheck())
{
EditorApplication.delayCall += () =>
{
EditorApplication.RepaintHierarchyWindow();
};
}
}
[InitializeOnLoadMethod]
private static void Initialize()
{
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI;
}
private static void HierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
{
if (!IsOpen()) { return; }
var go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
if (go == null) { return; }
var component = go.GetComponent(_componentName);
if (component == null) { return; }
EditorGUI.BeginChangeCheck();
var enabledProperty = component.GetType().GetProperties().FirstOrDefault(p => p.Name == "enabled");
if (enabledProperty == null) { return; }
var rect = selectionRect;
rect.x = rect.xMax - WIDTH;
rect.width = WIDTH;
bool enabled = EditorGUI.Toggle(rect, (bool)enabledProperty.GetValue(component, null)); // ON/OFFアクティブボックスを表示
if (EditorGUI.EndChangeCheck())
{
enabledProperty.SetValue(component, enabled, null);
EditorSceneManager.MarkSceneDirty(go.scene); // シーン変更フラグ ON
}
}
private static bool IsOpen()
{
var windows = Resources.FindObjectsOfTypeAll<HierarchyComponentToggler>();
return windows != null && windows.Length > 0;
}
}
}
UDIO 프로세스가 포함되지 않았습니다.사용법
메뉴에서 Tools/Hierrarchy Componente Togler를 클릭하십시오.
클릭하면 창이 열리고 ON/OFF에 대한 구성 요소 이름만 입력하면 됩니다
(끝)
Reference
이 문제에 관하여([Unity 확장] 구성 요소의 ON/OFF 콤보 상자를 등급 제도에 표시하는 편집 확장을 시도해 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/r-ngtm/items/9856e4341d0f43455b36
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Unity 확장] 구성 요소의 ON/OFF 콤보 상자를 등급 제도에 표시하는 편집 확장을 시도해 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/r-ngtm/items/9856e4341d0f43455b36텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)