유튜브 33 - https://youtu.be/YEGLuyDHIhA
안녕하세요~ 어느덧 33강을 맞이하고 있습니다. 지난 시간에 싱글턴을 배워보았는데요. 사실 좀 어려울듯 합니다. 그래서 오늘은 다른 방법으로 다시한번 싱글턴을 살펴보면서 변수를 서로 공유하는 방법을 살펴보겠습니다. 원리는 같은데 다른 방법으로 코드를 작성해보면서 이해를 높여보는 시간이 되겠습니다.

먼저, 잠간 이전에 배운 접근자에 대해 살펴봅니다. 접근자란 변수, 또는 함수를 접근할 수 있는지 여부를 결정하는 것입니다. 접근자에는 private, public, protected 이 3종류가 있습니다. 접근자는 변수, 메서드(함수)에 붙여줄 수 있으며, 기본값은 private으로 설정됩니다. private은 비 공개로 설정하며, public은 공용, protected는 보호받는 접근자라고 보시면 됩니다. 일단 코드를 통해 살펴보도록 하겠습니다.

다음과 같이 PlayerController 스크립트에 퍼블릭으로 선언된 speed 변수가 있습니다. 우리가 전에 열심히 배운 코드이지요.

GameManager 스크립트에서 이러한 speed 변수를 인식할 수 있을까요? 다음과 같이 콘솔에서 에러를 볼 수 있습니다.

우리는 전에 GameManager 스크립트를 static으로 선언하여 싱글턴 패턴으로 만들어 두었습니다. 이제 PlayerController 스크립트에서 다음과 같이 GameScore 변수를 인식하는 것을, 같이 공유하는 것을 볼 수 있습니다.

그럼 PlayerController 스크립트의 speed 변수를 공유하기 위해 싱글턴 패턴으로 만들어 볼까요? 다음과 같이 Start( ) 함수에 작성해 봅니다. GameManager에도 디버그를 통해 speed 변수를 출력해 봅니다. 그런데 이와 같이 작성할 경우 처음에는 콘솔상에서 오류가 없지만 게임을 플레이해보면 중간에 에러가 납니다. 지난 시간에는 Start( ) 함수에 넣어도 에러가 나지 않았습니다. 왜 그럴까요?

다음과 같이 Awake( ) 함수에 instance1 변수를 할당하도록 코드를 수정합니다. 이제 게임을 플레이해도 에러가 나지 않습니다. 이와 같은 코드의 차이를 통해 우리는 Awake( ) 함수를 통해 초기화해야 함을 알 수 있습니다. 즉 Awake( ) 가 Start( ) 보다 먼저 실행되어 변수를 할당해주어야 되는 것이지요. 이러한 부분을 정확하게 이해해야 코드를 제대로, 자신의 맘대로 작성할 수 있을 것입니다.

조금 어려웠을지도 모르겠습니다. 프로그래밍 공부를 전에 했다면 너무나 당연한 이야기일것이지만, 처음 배우는 분들은 너무 어려울 것입니다. 저는 플래시를 통해 프로그래밍을 배웠고, 자바스크립트를 통해 좀더 깊이 있는 이해가 쌓인 듯 합니다. 유니티 C#을 공부하며, 이제 좀 더 클래스의 개념, 오브젝트의 개념이 명확해지는 듯 합니다. 어렵다면… 다시 보고, 최대한 이해하려고 노력하며, 많은 자료를 살펴보시기를 추천합니다. 책도 다시 보고, 강의도 다시 듣고…. 그리고 너무 어려우면 좀 시간을 두고 나중에 다시 보시면 됩니다. ^^ 하다보면.. 이해됩니다. 얼마전 유니티 코리아에서 인디게임을 개발한 개발자가 그러더군요.. 그냥 했다고.. 프로그래밍은 우직하게 버티는 것이 중요합니다. 또.. 나는 할수 있다라는 자신감을 마음에 두고 꾹 참고 버텨야 실력이 느는 것 같습니다. 열심히 공부하신느 여러분들을 응원합니다. 33강까지 잘 오신 분들은 하실 수 있습니다. 화이팅입니다. ^^

유튜브 33 - https://youtu.be/YEGLuyDHIhA
안녕하세요~ 어느덧 33강을 맞이하고 있습니다. 지난 시간에 싱글턴을 배워보았는데요. 사실 좀 어려울듯 합니다. 그래서 오늘은 다른 방법으로 다시한번 싱글턴을 살펴보면서 변수를 서로 공유하는 방법을 살펴보겠습니다. 원리는 같은데 다른 방법으로 코드를 작성해보면서 이해를 높여보는 시간이 되겠습니다.
먼저, 잠간 이전에 배운 접근자에 대해 살펴봅니다. 접근자란 변수, 또는 함수를 접근할 수 있는지 여부를 결정하는 것입니다. 접근자에는 private, public, protected 이 3종류가 있습니다. 접근자는 변수, 메서드(함수)에 붙여줄 수 있으며, 기본값은 private으로 설정됩니다. private은 비 공개로 설정하며, public은 공용, protected는 보호받는 접근자라고 보시면 됩니다. 일단 코드를 통해 살펴보도록 하겠습니다.
다음과 같이 PlayerController 스크립트에 퍼블릭으로 선언된 speed 변수가 있습니다. 우리가 전에 열심히 배운 코드이지요.
GameManager 스크립트에서 이러한 speed 변수를 인식할 수 있을까요? 다음과 같이 콘솔에서 에러를 볼 수 있습니다.
우리는 전에 GameManager 스크립트를 static으로 선언하여 싱글턴 패턴으로 만들어 두었습니다. 이제 PlayerController 스크립트에서 다음과 같이 GameScore 변수를 인식하는 것을, 같이 공유하는 것을 볼 수 있습니다.
그럼 PlayerController 스크립트의 speed 변수를 공유하기 위해 싱글턴 패턴으로 만들어 볼까요? 다음과 같이 Start( ) 함수에 작성해 봅니다. GameManager에도 디버그를 통해 speed 변수를 출력해 봅니다. 그런데 이와 같이 작성할 경우 처음에는 콘솔상에서 오류가 없지만 게임을 플레이해보면 중간에 에러가 납니다. 지난 시간에는 Start( ) 함수에 넣어도 에러가 나지 않았습니다. 왜 그럴까요?
다음과 같이 Awake( ) 함수에 instance1 변수를 할당하도록 코드를 수정합니다. 이제 게임을 플레이해도 에러가 나지 않습니다. 이와 같은 코드의 차이를 통해 우리는 Awake( ) 함수를 통해 초기화해야 함을 알 수 있습니다. 즉 Awake( ) 가 Start( ) 보다 먼저 실행되어 변수를 할당해주어야 되는 것이지요. 이러한 부분을 정확하게 이해해야 코드를 제대로, 자신의 맘대로 작성할 수 있을 것입니다.
조금 어려웠을지도 모르겠습니다. 프로그래밍 공부를 전에 했다면 너무나 당연한 이야기일것이지만, 처음 배우는 분들은 너무 어려울 것입니다. 저는 플래시를 통해 프로그래밍을 배웠고, 자바스크립트를 통해 좀더 깊이 있는 이해가 쌓인 듯 합니다. 유니티 C#을 공부하며, 이제 좀 더 클래스의 개념, 오브젝트의 개념이 명확해지는 듯 합니다. 어렵다면… 다시 보고, 최대한 이해하려고 노력하며, 많은 자료를 살펴보시기를 추천합니다. 책도 다시 보고, 강의도 다시 듣고…. 그리고 너무 어려우면 좀 시간을 두고 나중에 다시 보시면 됩니다. ^^ 하다보면.. 이해됩니다. 얼마전 유니티 코리아에서 인디게임을 개발한 개발자가 그러더군요.. 그냥 했다고.. 프로그래밍은 우직하게 버티는 것이 중요합니다. 또.. 나는 할수 있다라는 자신감을 마음에 두고 꾹 참고 버텨야 실력이 느는 것 같습니다. 열심히 공부하신느 여러분들을 응원합니다. 33강까지 잘 오신 분들은 하실 수 있습니다. 화이팅입니다. ^^