· [중급자를 위한 유니티 스크립팅 튜토리얼] - Static
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 제네릭(Generic)
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 상속
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 다형성
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 인터페이스
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 확장 메서드
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 네임스페이스
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 리스트
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 딕셔너리
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 코루틴
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 쿼터니언
· [중급자를 위한 유니티 스크립팅 튜토리얼] - 델리게이트
이 시리즈는 유니티에서 제공하는 튜토리얼을 정리해서 올린 것입니다.
-----------------------------------------------------------------------------------
어트리뷰트(attribute)
어트리뷰트는 메서드, 변수 또는 클래스를 선언할 때 정보를 첨부할 수 있게 해줍니다.
이는 기존 코드를 개선하거나 변경하는 데 유용합니다.
어트리뷰트 자체는 효과와 용도는 매우 다양합니다.
-----------------------------------------------------------------------------------
3d 구체를 회전시키는 코드가 있습니다.
해당 코드에는 회전속도를 정하기 위한 speed변수가 선언되었으면 현재 0으로 초기화가 되어있습니다.
Update()메서드에서는 현재 speed에 따라 Y축을 중심으로 오브젝트를 회전시킵니다.
이 코드는 잘 작동합니다.
하지만 만약 speed 변수의 값을 제한하고 싶다면 어떻게 해야할까요?
if else문을 사용해 변수의 현재 값을 감지하여 범위를 벗어나지 않도록 코드를 작성해줄 수 있습니다.
또는 어트리뷰트를 사용하는 방법도 있습니다.
이번 경우에는 Range 어트리뷰트를 사용해보겠습니다.
-----------------------------------------------------------------------------------
어트리뷰트는 수정하려는 코드 바로 위 또는 바로 앞에 작성됩니다.
일반적으로 스크립트의 다른 부분에 영향을 주지 않습니다.
모든 어트리뷰트의 구문은 대괄호로 시작합니다.
그런 다음 Range 어트리뷰트의 경우 Range 키워드를 쓰고 괄호를 붙입니다.
괄호 안에 최소 및 최대 값을 작성합니다.
이는 어트리뷰트에 영향을 받는 변수가 가질 수 있는 최소 및 최대 값을 의미합니다.
대괄호를 닫고 어트리뷰트를 마칩니다.
저는 변수 위에 어트리뷰트를 배치했습니다. 원한다면 앞에 배치할 수도 있습니다.
Unity로 돌아가 인스펙터 뷰를 확인해봅시다.
speed 변수의 모양이 변했습니다.
최소값에서 최대값까지 이동하는 슬라이더가 생겼습니다.
이제 씬을 실행하면 슬라이더를 움직여 speed 변수를 직접 변경할 수 있습니다.
-----------------------------------------------------------------------------------
다른 어트리뷰트의 예로는 ExecuteInEditMode가 있습니다.
이 어트리뷰트는 스크립트가 플레이 모드(Play mode)가 아닐 때도 실행되도록 합니다.
여기 circle 오브젝트가 있는 다른 씬이 있습니다.
이 circle에 붙여진 스크립트는 circle의 색을 빨간색으로 바꾸는 기능을 합니다.
이 스크립트에 ExecuteInEditMode 어트리뷰트를 사용해보도록 하겠습니다
ExecuteInEditMode 어트리뷰트는 스크립트의 모든 코드에 적용되므로 클래스 앞에 배치합니다.
이 어트리뷰트에는 매개변수가 없으므로 괄호가 필요하지 않습니다.
Unity로 돌아가면 오브젝트가 빨간색으로 변한 것을 볼 수 있습니다. 씬을 실행하지 않았음에도 스크립트가 실행되었습니다.
-----------------------------------------------------------------------------------
ExecuteInEditMode 어트리뷰트는 주의해서 사용해야 합니다. 일반적으로 스크립트는 씬이 실행될 때 실행됩니다.
씬 실행을 중지하면 씬의 게임 오브젝트에 대한 변경 사항은 되돌려집니다.
그러나 EditMode에서 실행되는 스크립트는 씬의 오브젝트를 수정, 생성 및 삭제할 수 있습니다.
또한 이런 변경 사항이 되돌려지지 않고 영구적입니다.
예를 들어, 씬의 circle은 실제로 영구적으로 빨간색으로 수정되었습니다. 이 문제를 해결하려면 색상을 수동으로 다시 변경해야 합니다.
-----------------------------------------------------------------------------------
자주 쓰이는 [SerializeField]도 어트리뷰트입니다.
이처럼 어트리뷰트에는 정말 다양한 종류가 있으니 찾아보시는 걸 추천드립니다.
적어주신거 읽어보면 C#의 Attribute 보단 Unity Attribute에 대한 내용이네요어주신거 읽어보면 C#의 Attribute 보단 Unity Attribute에 대한 내용이네요
https://learn.microsoft.com/ko-kr/dotnet/csharp/advanced-topics/reflection-and-attributes/attribute-tutorial
이
글을 읽으신 분들은 위 링크도 읽어보시면 좋을 것 같습니다
유니티에서 제공하는 튜토리얼이라 유니티 어트리뷰트를 다뤘다봐요 몰랐는데 하나 배워갑니다 자료 올려주셔서 감사합니다
저 슬라이드라 어트리뷰트였구나