inflearn logo
강의

講義

知識共有

Unity で始めるゲーム開発: Part 3. シューティングゲーム開発

GetComponent

GetComponent 강의 질문

339

kkln24865149

投稿した質問数 17

0

칼라를 변경하기 위해,

MeshRenderer rend = GetComponent<MeshRenderer>();

rend.material.color = new Color(1,0,0,1);

위 처럼, GetComponent 함수로 값을 불러와야 MeshRenderer에 접근할 수 있는 것을 알게되었습니다.

 

그렇다면, Transform에 접근하기 위해서도

Transform trans = GetComponent<trans>();

이렇게 함수로 값을 불러와야 되는 것이 아닌가요?

앞이 강의에서는

transform.position = new Vector3(1, 0, 0);

로 바로 position에 접근하여 값을 변경 가능한 것으로 배웠던 것 같습니다.. 차이점이 뭐죠?

C# unity

回答 1

0

lijian65273873

저도 수강생이지만 우연히 보게 되어서 검색해 보았습니다.
제가 찾아본 바로는


Unity에서는 특정 컴포넌트에 접근하기 위해 GetComponent<T>() 메서드를 사용합니다. 그러나 Transform은 모든 GameObject에 항상 포함되어 있는 기본 컴포넌트이기 때문에 특별한 경우로 취급됩니다.

Unity는 GameObjectTransform 컴포넌트에 바로 접근할 수 있도록 transform이라는 특별한 프로퍼티를 제공합니다. 따라서 Transform 컴포넌트에 접근하기 위해 GetComponent<Transform>()를 사용할 필요가 없습니다. 대신 transform 프로퍼티를 바로 사용하면 됩니다.

요약하자면:

  • Transform은 모든 GameObject에 항상 포함되어 있기 때문에 transform 프로퍼티를 통해 직접 접근할 수 있습니다.

  • 다른 컴포넌트 (예: MeshRenderer, Rigidbody 등)는 GetComponent<T>()를 사용하여 접근해야 합니다.

요점은

Transform은 모든 GameObject에 있어서 GetComponent 사용안하고 transform으로바로 접근할수 있게 약속한것 같습니다.

0

kkln24865149

감사합니다!

캐릭터 변경에 관해

0

220

1

Asteroid 생성에 관련해서

0

182

1

Part4 유니티로 세가지의 게임만들기 강의

0

206

1

Clamp 사용 시 앞서 설정한 ViewportToWorldPoint의 min, max를 사용하지 않고 새로 설정하는 이유가 있을까요

0

268

1

섹션8 슈팅게임 프로토타입 만들기3(적과 발사체)

0

261

1

캐릭터 고정데이터 로딩 강의

0

319

1

Destroy 함수 질문

0

407

1

transform.position과 transform.Translate 의 차이가 뭔가요??

0

1906

1

강의도중 질문이 있습니다

0

485

1

강의자료

0

279

0

117강 구조체를 정의하여 ShipData 구성

0

218

0

굳이 InitTime을 만들어서 호출 하는 이유가 있나요?

0

287

0

GameManager 의 Start()가 스페이스 누를때마다 반복실행됩니다.

0

409

1

Collider인 other.gameObject;

0

423

0

Generic에 대한 질문이 있습니다.

0

257

0

gameObject.setActive(false);

0

575

1

애플 앱스토어

0

240

0

비주얼스튜디오 오류

0

2140

1

part4강의

0

307

1

발사체 스피드

0

290

1

4분 44초 제가 이해한게 맞는지 궁금합니다

0

260

1

2분 44초 왜 void 함수를 써야하나욤..?

0

350

1

해당 부분 업데이트

0

255

1

인터페이스를 쓰는 근본적인 이유

0

499

1