인프런 커뮤니티 질문&답변

hwakyeom님의 프로필 이미지

작성한 질문수

레트로의 유니티 C# 게임 프로그래밍 에센스

사칙연산 + 복합 연산자

클래스 자체 내에서 리지드바디를 바로 명시해줄 수는 없는 건가요?

작성

·

229

0

public class Player : MonoBehaviour
{

public float speed = 10f;
Rigidbody playerRigidbody = GetComponent<Rigidbody>();
// Start is called before the first frame update
void Start()
{
}
이게 왜 안 되는지 혹시 알 수 있을까요?! 궁금합니다!
그리고 드래그앤드롭 해서 연결시켜 주는 것과
Start() 내에서 겟컴포넌트로 연결시켜 주는 것의
효율 차이도 궁금합니다 ㅠㅠ
뇌피셜 가동해서 생각해 보면 드래그앤드롭은
프로그램이 실행되자마자 실행하는 것 같고,
Start() 내에서 하는 것은
프로그램이 가동 중인데 맵 다 그리고
저 스크립트 들어간 오브젝트가 나타나는 시점에서
발동되는 게 아닌지...
그럼 로딩 시간 면에서... 게임 플레이 도중에
막 겟컴포넌트 부르고 연결시켜주고 그러면
똥컴은 렉 걸리고 그러지 않을까요??
궁금합니다 선생님 ㅠㅠ 질문 여러 개 해서 죄송합니다..

답변 2

0

hwakyeom님의 프로필 이미지
hwakyeom
질문자

아하...! 제가 생각했던 거랑 같았군요! 감사합니다 ^^*

0

이제민님의 프로필 이미지
이제민
지식공유자

런타임에 대해 생각해볼 수 있는 좋은 질문입니다 :)

이것은 런타임과 런타임이 아닌 상태를 구별해서 생각하면 이해할 수 있는데,
런타임이란 실제로 어플리케이션(프로그램)이 동작하는 시간입니다.

그리고 어떤 기능들은 런타임에서만 의미를 가지고 동작할 수 있습니다.

반대로 어떤 기능들은 런타임에서 어떻게 동작할지 알수 없으며, 런타임 이전에 어떻게 사용될지 모두 명시적으로 선언되야 합니다.

괄호와 세미콜론을 붙인 문장의 의미는 어떤 함수를 실행하는 것입니다. 함수의 실행은 런타임에서만 가능합니다.

즉, GetComponent(); 는 프로그램이 실행될때 동작합니다.

그런데 변수 선언은 프로그램이 실행되기 전에 이루어져야 합니다.

즉, 변수 선언은 프로그램 실행 전에 이루어지는 일이므로, 프로그램이 실행될때 동작하는 함수 실행을 클래스 변수 선언부의 값 할당에 사용할 수없습니다.

hwakyeom님의 프로필 이미지

작성한 질문수

질문하기