728x90
반응형

Game Development, 게임개발/개발 98

유니티에서 데이터 관리하는 법,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;..

상속, 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;..

FSM,유한 상태 기계, Finite State Machines [Unity]

무슨 기계공학과에서 배우는 단어 같이 생겼다. 아니면 무슨 고체전자물리처럼 Solid State Physics 같이 무슨 State가 들어간다. 맞다.. 회로 꾸밀 때 나는 swtich문 많이 썼던 것 같기도 하고.. Mealy, Moore 했었는데 다 까먹은듯 데헿 하지만 여기서는 프로그래밍 스타일, 패턴 중에 하나로 알아볼 만한 가치가 있다. 그래서 알아보기로 했다. FSM의 간단하게 정의를 하고 가자. 각 State가 유한하게 있고 State를 전이시키기 위한 조건이 있다. 그것을 표현하는 방법이라고 말할 수 있다. 그럼 게임 개발에서 FSM의 가지는 의미는 무엇이냐? “finite State Machine is a structure that allows to define complex behavi..

제너릭, Generics [Unity]

cpp의 템플릿과 비슷하다고 보면 된다. 제너릭을 구현하는 경우는 내 경험이 부족해 아직 많이 못봤지만 제너릭을 가져다 쓰는 것이 보통이다. 알아보자 제너릭은 일반적으로 다양한 데이터 타입으로 같은 기능을 수행하게 하는 것이다. 어차피 기능이 같을 거라면.. 정수형, 문자열, 실수형...을 일일이 지정해주는 것은 정말 힘들다. 그래서 무슨 타입이든.. 받을 수 있게 하였는데 예를 들어보자 using UnityEngine; using System.Collections; public class SomeClass { //여기 원래 자료형이 들어가는 자리에 T라는 것이 들어가있고 //메서드 뒤에 라는 것이 나왔다. T는 어떤 자료형으로도 인식된다. //그래서 정수형, 실수형을 넣어도 알아서 인식이 된다. pub..

Method Overloading, 메서드 오버로딩 [Unity]

오버로드하면 맨날 스타크래프트가 생각난다. Overload라서.. 조금 다르지만 그래서 이걸 알아보려고 한다. 왜냐?? 맨날 Unity에서 메서드를 사용하면 자꾸 옆에 + overloaded +3 막 이런게 뜬다. 그래서 알아보기로 하였다. 원래 메서드는 유일하게 존재한다. 동일한 것이 존재하면 중복되어 오류가 생긴다. 그러나 Method Overloading이 그것을 피하게 해준다. 피하게 해준다는 뜻이. 중복되는 내용을 써도 된다! 가 아니라 이름만 같을뿐 다른 기능을 한다는 의미로 받아들여야 한다. 예시를 보자 using UnityEngine; using System.Collections; public class SomeClass { //당연히 더하는 메서드다. 정수를 // 인자로는 정수 2개를 받..

728x90
반응형