728x90
반응형

unity 77

Coroutine,코루틴(IEnumerator, StartCoroutine, yield 등 )에 대한 모든 것 [Unity]

모든 것을 자세히 알기 전에 코루틴(Coroutine)이라는 것에 대해서 알고 가야 한다. A coroutine is a function that can suspend its execution (yield) until the given YieldInstruction finishes. 쉽게 말하면 잠시 ~할 시간을 준다. 다시 말해서 Interval을 준다. YieldInstruction이 끝날 때까지 Interval을 주는 것이다. 근데 왜 쓰느냐? 우선 대표적으로는 Single function임에도 시간이 오래걸리는 함수를 실행한다면 그 실행동안은 게임이 frozen 된 것 같이 보이겠지? 그래서 코루틴으로 그것을 해결할 수 있고 또한 Timer같이 일정 시간 이후에 쓰이게 할 수 있다. 코루틴(Cor..

Namespace, 네임스페이스 [Unity]

모든 언어들에게 있는 외부 라이브러리, 툴 같이 필요한 것들을 불러오는 것. 엄청나게 많은 것들 중에 무엇을 가져올지 모른다. C#에서는 네임스페이스가 해결해준다. 알아보자 정의부터하자 네임스페이스란 클래스를 구분하기 위한 이름표 같은 것이다. C#이 기반으로 있는 닷넷프레임워크에는 수많은 클래스가 있는데 클래스 간의 충돌을 막고 사용자의 편의성을 위해 네임스페이스를 정의했다. 극단적으로 예를 들어 문자열을 add 하는 함수랑 숫자를 add 하는 함수랑 이름이 Add로 같을 수도 있잖아..? Add()이렇게 쓰면..되겠냐고... ++ 사실 오버로드(Overload)가 되어서 파라미터마다 다르게 적용되겠지만 아무튼 그래서 다른 이름표인 네임스페이스를 붙이는 것이다. **사실 클래스는 네임스페이스가 붙어야 ..

유니티에서 데이터 관리하는 법,How To Handle Data Between Scenes [Unity]

참고링크를 내 방식대로 해석했다. 게임이라면 꺼서 지금까지의 기록이 사라지면 안된다. 만약 예전에도... 자동저장이 있었다면 누나와 싸우지 않지 않았을까?? 게임을 중간에 끄더라도... 아무 기분이 상하지 않도록 데이터를 저장해야 한다. 그래서 알아보기로 했다. ㅋㅋㅋㅋㅋ Holy Grail 이거보고 할리갈리라 읽음 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 진짜 시작해보자 -Data Persistence, 데이터의 지속성이 필요하다. 데이터를 다루려면 현재 가지고 있는 데이터가 사라지지 않아야 한다. 다만 여기서는 Save하거나 Load와 같이 메모리에 저장한다는 의미는 아니다. 그저 게임이 실행하는 동안만 데이터를 가지고 있었으면 좋겠다는 이야기다. 1945, 메탈슬러그가 껐다 킨다고 해서 중간 부분부터 시작하진 않는 것처..

Interface, 인터페이스 [Unity]

인터페이스는 상속과 비슷하면서도 다른 기능이다. Java의 interface와 거의 비슷하다고 보면 된다. 보다보면 추상클래스인가? 이 느낌도 날 것이다. 알아보자 역시 정의부터 해보자. 인터페이스는 뜻을 해석해보면 알겠지만 상호간의 소통을 위한 매개체랄까 그런 것이다. 여기선 "인터페이스로 내가 정의한 것들을 너는 상속을 받아서 무조건 구현해야 한다. "는 그런 의무가 생긴다. ++ 인터페이스에 구현된 것을 상속 받은 자식클래스가 구현하지 않으면 오류가 생김 ++ 추상클래스는 다중 상속이 안되지만 인터페이스는 다중 상속 가능 상속과 비슷하지만 다른 것이 무엇이냐? 바로 클래스 간의 관계가 다르다. 밑의 그림을 보면 쉽게 알 수 있다. Implements는 여기서 구현이라고 생각하면 되겠다. 또한 int..

Overriding, 덮어쓰기, 오버라이딩 [Unity]

OOP의 큰 특징 중 하나인 오버라이딩에서 알아보자 얘 덕분에 할 일이 많이 줄어들 수 있었다. 알아보자 정의부터하자 간단하게 말하면 부모클래스에서 정의된 메서드를 자식클래스에서 재정의 하는 것이다. 즉, 부모클래스에서 받은 메서드 중 자식 클래스에서 더 자세하게 기능을 구현하고 싶다면 overriding을 통해서 구현할 수 있다. 하지만 그렇다고 부모클래스의 정보까지 잃어버리는 것은 아니다. 기본적으로 Overriding을 하기 위해서 부모클래스의 메서드는 virtual로 선언이 되어야 하고 자식클래스의 메서드는 override로 선언되어 있어야 한다. 또한 위에서 말했다시피 부모클래스의 정보를 잃어버리는 것은 아닌데 이 또한 base 키워드로 다시 오버라이딩 된 메서드가 아닌 상속 받은 메서드를 불러..

Member hiding, 하이딩, 은닉 [Unity]

이번엔 약간 처음볼 수도 있는 은닉, hiding에 대해서 알아보려고 한다. 알아보자 바로 무엇인지 정의해보자 자식의 멤버 와 부모의 멤버 간의 서로 메서드를 가리는 것을 의미한다. -> 여기선 부모클래스의 메서드가 숨겨진다. **오버라이딩, Overriding을 생각하면서 약간 조금 다르다고 생각하면 될 것 같다. 상속, 다형성에서 중복된 내용이지만 다시 따로 개념을 꺼내서 다룰 뿐이다. 즉, 부모 타입으로 자식 객체를 생성하는 경우가 잦은데 자식 메서드를 쓰고 싶어도 괜히 부모클래스의 메서드가 실행되니까 이런 기능을 이용하는 것이다. 자식 클래스에서 부모 클래스에서 정의된 이름이 같은 메서드가 정의되면서 부모 메서드를 숨기게 된다. **사실 new 안써도 부모 메서드와 자식 메서드의 이름이 겹치면 자..

Script lifecycle, 이벤트 함수의 실행 순서 [Unity]

Start(), Update()만 봐도 잘 돌아간다고 할 수 있지만 크고 복잡한 게임일수록 다른 이벤트함수들이 많이 필요하다. 그래서 다시 한 번 정리하는 느낌으로 하나씩 살펴보자. **2020.3(LTS)버전이다. 이전 버전은 조금 다르게 생기긴 했다. 큰 틀은 안 바뀌었겠지만. 이게 바로 그 큰 그림이다. Internal function보다 Uswer callback을 보면 더 좋다. 물론 우리가 사용할 수 있는 함수가 User callback이지만 큰 줄기를 이해하고 그 다음에 더 알아보는 것이 좋다. 순서대로 하나씩 살펴보자 첫 번째 씬 로드되면 아래 2가지 함수가 실행된다. 씬이 시작할 때(씬에서 오브젝트마다 한 번) 호출된다고 한다. Awake: 이 함수는 항상 Start 함수 전에 호출되며 ..

Polymorphism, 다형성 [Unity]

OOP의 큰 특징 중 하나인 다형성에 대해 알아보려고 한다. 상속에 그치지 않고 다양하게 활용될 수 있는 것은 얘 때문이다. 알아보자 상속의 의미를 안다면 바로 예를 들어서 보자 사실 다형성은 한가지의 클래스가 여러 자식클래스를 가질 때 거기서 의미가 생긴다. 예를 들어 자동차 밑에는 버스, 택시, 트럭이 있는 것처럼 바퀴가 공통적으로 가지고 있고 다른 것도 공통적으로 가지고 있을 것이다. 그렇다면 굳이 버스, 택시. 트럭에 공통된 부분을 3번이나 쓰는 대신 부모클래스인 자동차에 넣어 효율을 추구하고자 함이다. 다시 말해서 상속은 받되 부모클래스에서 받은 내용은 공통적으로 가지고 때론 필요에 따라 부모에게 받은 것들도 오버라이딩을 통해 활용하자. 부모 클래스를 만들어보자 using UnityEngine;..

Object Pooling, 오브젝트 풀링, 디자인 패턴 [Game Development]

게임을 조금 더 개발자의 입장에서 용이하게 만들어주는 디자인 패턴인 오브젝트 풀링에 대해서 알아보자 **딱히 어떠한 게임엔진에 국한된 패턴은 아니다. 그냥 ~한 개념이다. 우선 오브젝트 풀링이란 것이 무엇인가? 오브젝트 풀링이란 오브젝트를 재활용하기 위한 디자인 패턴을 의미한다. **여기서 재활용이란 정말 다시 활용하는 것을 의미한다. 예를 들자면 총알, bullet이 가장 대표적이다. 우리가 흔히 총을 쏠 때 버튼을 누르면 총알이 생기고 날아가게끔 만든다. 근데 미니건 쏜다고 생각해보자. 1분에 600발이었나 K-2가? 우습지 미니건 쏘면 1분에 몇천 발 쓸건데.. 그렇게 되면 몇천개의 총알을 만들어야 한다. 여기서 생각한 것이 ... 좀 아까운데..? 아니 쏠 때마다 오브젝트 만들면... 몇천 발이 ..

상속, Inheritance, C# [Unity]

OOP의 특징 중 하나인 상속을 배워보기로 하자. 상속이란 것이 정말 코드 수를 많이 줄여준 공헌을 하지 않았나 싶다. 알아보자 상속은 클래스를 2가지 종류로 나눈다. 1. Parent or base class, 부모 클래스 2. Child or derived class, 자식 클래스 부모는 자식에게 상속을 하는 주체고 자식은 부모에게 상속을 받는 주체다. 이러한 관계를 Is-A Relationship이라고도 한다. 뜻은 Child class is a Parent class 라는 뜻이다. 상속이 된다면 Parent에 있는 변수, 메서드 등의 아이템들이 Child도 쓸 수 있게 바뀌는 것이다. 예를 들어보자 먼저 부모클래스다. using UnityEngine; using System.Collections;..

728x90
반응형