본문 바로가기
개발/Unity

프로퍼티로 readonly 변수 만들기 (get; private set;)

by 피로물든딸기 2022. 5. 17.
반응형

Unity 전체 링크

 

프로퍼티로 외부에서는 접근 불가능한 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:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글