Unity의 MonoBehaviour에서 Inspector에 값을 제시하지 않는 방법
개막사
Unity에서 Inspector에서 설정 값을 변경하려면 public
에서 값을 선언해야 합니다.public MyScript : MonoBehaviour {
public string Value = "";
}
인스펙터에 표시하고 싶지 않지만, 다른 반에서 접근하고 싶은 변수를 설정하고 싶을 때가 있습니다.
그 수단에 관한 필기.
수완
모드 1: HideInspector
public class MyScript : MonoBehaviour
{
[HideInInspector] public string Value = "";
}
장점
- 초기값 설정 가능
결점
- Serialize의 값 유지 문제(※ 1)
- 공개 권한을 가지고 놀지 않습니다(get 등 불가).
-get/set에서 설명을 처리할 수 없습니다.(잠깐 전환 같은 거)
※1
- Prefab화 이후에 초대장을 추가할 때 값을 계속 유지하는 의외의 행동을 합니다
- HideInspector는 inspector를 자주 표시하지 않으며 Serialize object의 값은 저장하면 됩니다.
- Value에 abc
를 넣은 상태에서 Prefab화된 Object에서 HideInSpector를 추가할 때의 Prefab 값의 상태
-object의 값이 저장되어 있기 때문에 & 그 필드는 Serializable입니다. 의외로 inspector의 값이 복원되었습니다%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
...(中略)...
--- !u!114 &114625309749185936
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1202429588961352}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4dbbba54007a4473fb3737c795b998a3, type: 3}
m_Name:
m_EditorClassIdentifier:
Value: abc
모드 2: NonSerialized
public class MyScript : MonoBehaviour
{
[NonSerialized] public string Value = "";
}
장점
- 초기값 설정 가능
- Serialize에 값 유지 문제가 없습니다.
결점
- 공개 권한을 가지고 놀지 않습니다(get 등 불가).
-get/set에서 설명을 처리할 수 없습니다.(잠깐 전환 같은 거)
모드3: Getter, setter 속성
public class MyScript : MonoBehaviour
{
public string Value { get; set; }
void Awake()
{
this.Value = "";
}
}
장점
-get, set에서 공개 범위와 권한을 자유롭게 제한합니다
-getter에서 쓰기 처리를 할 수도 있고 set의privvate만 할 수도 있다private set;
- Serialize에 값 유지 문제가 없습니다.
결점
- 선언에 초기 값이 포함되지 않습니다.Awake에서 초기화해야 합니다.
나는 개인적으로 이런 모델을 좋아한다.
Getter,setter를 통해 다른 반을 방문하는 것도 자연스러운 기술이다.
총결산
HideInInInInspector의 의도치 않은 행동은 원칙적으로 그만두자.
NonSerialized 또는 property 사용
Reference
이 문제에 관하여(Unity의 MonoBehaviour에서 Inspector에 값을 제시하지 않는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mattak/items/a1578ccc58e421a2d115
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public MyScript : MonoBehaviour {
public string Value = "";
}
모드 1: HideInspector
public class MyScript : MonoBehaviour
{
[HideInInspector] public string Value = "";
}
장점- 초기값 설정 가능
결점
- Serialize의 값 유지 문제(※ 1)
- 공개 권한을 가지고 놀지 않습니다(get 등 불가).
-get/set에서 설명을 처리할 수 없습니다.(잠깐 전환 같은 거)
※1
- Prefab화 이후에 초대장을 추가할 때 값을 계속 유지하는 의외의 행동을 합니다
- HideInspector는 inspector를 자주 표시하지 않으며 Serialize object의 값은 저장하면 됩니다.
- Value에
abc
를 넣은 상태에서 Prefab화된 Object에서 HideInSpector를 추가할 때의 Prefab 값의 상태-object의 값이 저장되어 있기 때문에 & 그 필드는 Serializable입니다. 의외로 inspector의 값이 복원되었습니다
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
...(中略)...
--- !u!114 &114625309749185936
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1202429588961352}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4dbbba54007a4473fb3737c795b998a3, type: 3}
m_Name:
m_EditorClassIdentifier:
Value: abc
모드 2: NonSerialized
public class MyScript : MonoBehaviour
{
[NonSerialized] public string Value = "";
}
장점- 초기값 설정 가능
- Serialize에 값 유지 문제가 없습니다.
결점
- 공개 권한을 가지고 놀지 않습니다(get 등 불가).
-get/set에서 설명을 처리할 수 없습니다.(잠깐 전환 같은 거)
모드3: Getter, setter 속성
public class MyScript : MonoBehaviour
{
public string Value { get; set; }
void Awake()
{
this.Value = "";
}
}
장점-get, set에서 공개 범위와 권한을 자유롭게 제한합니다
-getter에서 쓰기 처리를 할 수도 있고 set의privvate만 할 수도 있다
private set;
- Serialize에 값 유지 문제가 없습니다.결점
- 선언에 초기 값이 포함되지 않습니다.Awake에서 초기화해야 합니다.
나는 개인적으로 이런 모델을 좋아한다.
Getter,setter를 통해 다른 반을 방문하는 것도 자연스러운 기술이다.
총결산
HideInInInInspector의 의도치 않은 행동은 원칙적으로 그만두자.
NonSerialized 또는 property 사용
Reference
이 문제에 관하여(Unity의 MonoBehaviour에서 Inspector에 값을 제시하지 않는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mattak/items/a1578ccc58e421a2d115
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity의 MonoBehaviour에서 Inspector에 값을 제시하지 않는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mattak/items/a1578ccc58e421a2d115텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)