개발블로그
[유니티 C#] 유니티 Object 암시적 null 비교 본문
using UnityEngine;
using UnityEngine.UI;
private Image _imgSample = null;
private Image _imgSuper = null;
private void Start()
{
if(_imgSample)
BlahBlah();
}
private void BlahBlah()
{
_imgSuper.SetActive(false);
}
코드 분석중에 처음보는 구문을 발견했는데, 바로 if문에서 image타입만 조건으로 들어있는 조건문이었다.
보통은 if(_bool == true) 이런식의 조건문을 많이 사용해왔어서 생소한 구문이다.
// 처음에 nullable 타입인줄 알았는데 오브젝트의 암시적 null 비교 구문이었다😂 nullable 타입도 정리해봐야할듯...
public static implicit operator bool(Object exists);
Object의 메타데이터를 확인해보면 암시적(묵시적) 변환을 정의하는 operator가 있다.
유니티에서 Object를 상속받은 클래스의 인스턴스들은 이 묵시적 변환에 의해서
오브젝트가 null이 아니면 true를 반환하는 형식이다.
그러므로 오브젝트가 null이면 false를 반환한다.
따라서 맨 위 코드를 다시 보면,
Image _imgSample;
private void Start()
{
if(_imgSample)
BlahBlah();
}
그래서 Object 클래스를 상속받고있는 Image 형 _imgSample 변수가 if문 안의 조건으로 들어간다면,
'만약 _imgSample이 null이 아니면 (true) 함수 BlahBlah()를 실행한다.'
라고 이해할 수 있다.
* 사용자 정의 연산자 관련 도큐먼트
사용자 정의 전환 연산자 - C# 참조
C#에서 사용자 지정 암시적 및 명시적 형식 변환을 정의하는 방법을 알아봅니다.
docs.microsoft.com
* 공부하는 단계입니다. 잘못된 내용이 있다면 피드백 부탁드립니다😊
* e-mail : heehee970@naver.com
'Unity > 스크립팅' 카테고리의 다른 글
[유니티 C#] FollowCamera 만들기. 캐릭터를 따라다니는 카메라, 카메라가 움직이는 방향으로 이동하기. (0) | 2021.10.25 |
---|---|
[유니티 C#] 다형성(Polymorphism) (0) | 2021.10.20 |
[유니티 C#] Action 사용 - 이벤트(event), 강한 결합(Tight Coupling) 해소 (0) | 2021.10.13 |
[유니티 C#] 유한 상태머신(Finite State Machine, FSM) (0) | 2021.10.13 |
[유니티 C#] GetAxis, GetAxisRaw. 오브젝트가 바라보는 방향으로 이동하기 (0) | 2021.09.29 |