반응형
프로퍼티로 외부에서는 접근 불가능한 readonly 변수를 만들어보자.
이 변수는 다른 스크립트에서 읽을 수는 있지만 변경할 수는 없다.
빈 오브젝트를 만들고 TestScript1.cs와 TestScript2.cs를 추가한다.
TestScript1.cs 는 아래와 같다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestScript1 : MonoBehaviour
{
public int readOnlyInteger { get; set; }
static TestScript1 instance = null;
public static TestScript1 Instance
{
get
{
if (null == instance) return null;
return instance;
}
}
void Awake()
{
if (null == instance) instance = this;
}
void Update()
{
Debug.Log(readOnlyInteger);
}
}
TestScript2.cs는 아래와 같다.
현재 외부(TS2)에서 TS1의 변수에 접근하고 있고, 수정도 가능한 상태다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestScript2 : MonoBehaviour
{
void Start()
{
TestScript1.Instance.readOnlyInteger = 1;
}
}
이제 TestScript1의 set에 private을 추가하자.
public int readOnlyInteger { get; private set; }
아래와 같이 외부 스크립트에서는 접근이 불가능하도록 컴파일 에러가 발생한다.
그러나 내부(TestScript1)에서는 수정이 가능하다. (컴파일 에러 미발생)
즉 프로퍼티 get; private set; (Auto Implemented Properties, 자동 구현 프로퍼티)을 이용하여
외부에서만 read 가능하도록 변수를 만들 수 있다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - 런타임 시 프리팹에 스크립트 추가하기 (Attach Script when Instantiate a Prefab) (0) | 2022.05.29 |
---|---|
유니티 - 스크립트로 레이어(Layer) 관리하기 (0) | 2022.05.23 |
유니티 - 오브젝트를 선택된 상태로 만들기 : (4) 오브젝트 하나만 선택하기 (0) | 2022.05.17 |
유니티 - 마우스 스크롤로 카메라 줌 인 / 아웃 (Camera Zoom in / out with a Mouse Scroll) (0) | 2022.05.14 |
유니티 Plane, 평면의 길이 (0) | 2022.05.14 |
댓글