Game Development, 게임개발/개발

어트리뷰트, Attributes [Unity]

게임이 더 좋아 2021. 4. 2. 19:23
반응형
728x170

 

아.. 사실 속성이란 뜻인데

속성이라고 하면 property도 있어서

그냥 해석하지말고 영어 그대로를 받아들이는 것이 낫다.

 

알아보자

 


 

또 정의부터 하고 넘어가야겠지.

 

어트리뷰트란 어셈블리, 모듈, 클래스, 구조체, 열거형변수, 생성자, 메소드, 프로퍼티, 필드, 이벤트, 인터페이스, 파라미터, 반환값, 델리게이트 같은 프로그래밍 요소에 대해 메타정보를 포함 시킬수 있는 기능을 말한다.

 

어트리뷰트에는 아래와 같은 곳에 쓰인다.

Conditional - 메서드 실행 관여

DllImport - 외부 DLL 사용

Obsolete - 메서드 설명

Transaction - 트랜잭션 관리

WebService - 웹서비스 관련

Serializable -- 클래스 직렬화

 

 

??????? 감이 안오는데..???

뭐야?

 

유니티에서는 깊게 다루지 않지만.. 나도 아직 어려워서

필요할 때마다 찾는게 내 건강에 좋을 것 같다.

 

원래 하다보면 알게 되는 경우가 많다.

이게 그 경우가 되길 바란다.

 

 

 

SpinScript

using UnityEngine;
using System.Collections;

public class SpinScript : MonoBehaviour 
{
    [Range(-100, 100)] public int speed = 0;

    void Update () 
    {
        transform.Rotate(new Vector3(0, speed * Time.deltaTime, 0));
    }
}

 

만약 우리가 speed의 변수의 범위를 제한하고 싶다면 어떻게 할까??

물론 speed의 값을 반환받아 범위를 못벗어나게 할 수 있지만

Attribute로 붙일 수 있다.

 

Attribute는 우리가 제한하려는 코드 전에 선언한다.

위에선 Speed 전에 선언했다.

 

실제로 위와 같이 실행하면 Inspector 창에 범위가 생기며

런타임 중에서 값이 수정된다.

 

 

ColorScript

using UnityEngine;
using System.Collections;

[ExecuteInEditMode]
public class ColorScript : MonoBehaviour 
{
    void Start()
    {
        renderer.sharedMaterial.color = Color.red;
    }
}

 

ExecuteInEditMode 란 것이 있다.

이것은 해석 그대로

PlayMode가 아님에도 스크립트가 동작하게 만든다.

 

다만 주의할 점은 이렇게 선언해버리면

우리가 PlayMode를 끄면 원래대로 돌아오는 것과 다르게 

수정한 그대로 저장이 된다.

 

** 단, 이것을 쓰려면 클래스 전에 선언을 해야한다.

 

 

 

728x90
반응형
그리드형