유니티(Unity)에서 스크립트로 접근할 수 없는 속성에 접근하기

유니티를 사용하다 보면, 스크립트로는 접근할 수 없는 속성인데 인스펙터 창엔 표시되는 것이 있습니다. 그런 속성은 FindProperty를 이용해서 접근하면 되는 것 같습니다. 예를 들어, 조명의 lightmapping 속성을 접근하고 싶을 때엔 다음처럼 하면 됩니다.

using System.Collections;
using UnityEditor;
using UnityEngine;

public class TestWindow : EditorWindow
{
	Vector2 scrollPosition;

	[MenuItem("Window/Test")]
	static void Test()
	{
		EditorWindow.GetWindow(typeof(TestWindow));
	}

	void OnGUI()
	{
		scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);

		foreach (Light light in FindObjectsOfType(typeof(Light)) as Light[])
		{
			SerializedProperty lightmapProperty =
				new SerializedObject(light).FindProperty("m_Lightmapping");
			EditorGUILayout.LabelField(light.name + ": " + lightmapProperty.intValue);
		}

		EditorGUILayout.EndScrollView();
	}
}

참고: How can I access Lightmapping settings for a light via script? – Unity Answers

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중