게임아카데미
-
[유니티] 23강 부모/자식 오브젝트 및 태그[유니티] 기본 2022. 6. 6. 20:15
18강에서 다룬 Script로만으로 객체를 만들었던 코드를 함수로 만들었다. GameObject createGameObject(string className) 함수에서 go.AddComponent(); (▶변환▶) var type = System.Type.GetType(className); go.AddComponent(type); 이게 되니까, 코드가 깔끔하게 정리가 될수 있다. 참 흥미로운 부분이다. 이번에는 부모 오브젝트에 자식 오브젝트를 귀속 시켜보자.(이 용어가 맞을지는 모르겠다. 의미만 이해하자.) 부모 오브젝트의 trasform에 영향을 주면, 자식 오브젝트에게도 영향을 주는것이다. child.transform.SetParent(transfrom); 새로 만든 child.transform이 자..
-
[유니티] 22강 해상도2 실제 픽셀 사이즈[유니티] 기본 2022. 6. 6. 20:14
21강에서는 종회비에 이어, 설정한 해상도와 크기가 같게 보이도록 설정한다. 1. 메인 카메라를 선택한다. 2. Perspective, Orthographic 메뉴가 있는데, glPerspective, glOrtho 등의 함수를 상기된다. 3. 개발 해상도(width, height)의 height / 2를 Size에 입력한다. 4. 테스쳐가 프로젝트에 포함되면 PIxel Per Unit은 Default로 100이 설정되어 있다. Unit과 Pixel이 1:1이 되도록 100을 1로 변경한다. 21강과 22강으로 개발해상도와 다양한 단말기 해상도에 제대로 표현이 가능해졌다. -끗-
-
[유니티] 21강 해상도1 종횡비[유니티] 기본 2022. 6. 5. 00:23
우리가 만든 게임을 서비스를 한다고 가정해보자. 모바일에는 애플, 안드로이드에 사용되고 있는 단말기만 하더라도 엄청나다. 물론 PC에 서비스한다면 모바일 만큼은 아닐텐지만.. 그래도 많다. 모든 해상도에 맞게 각각 개발한다는건 불가능에 가깝다. 그럼 우리는 어떤 식으로 개발을 해야 할까.... 게임제작 할때 가장 먼저 정하고 진행되어야 할만큼 아주 중요한 사항이다. 가장 대중적인 해상도에 최고로 잘 최적화 할것인지, 제작 게임 특색을 가장 잘 살릴수 있는 해상도에 최적화할지..개발 해상도가 결정 되어야 그래픽 팀에서 컨셉에 맞게 작업이 진행될 것이다. 게임 할때 해상도 설정할때, 전체화면이라고 이렇게 왜곡되는걸 본적 있을것이다. 이 옵션은 보기도 싫고 없는게 더 낫다. 약간의 아쉬움은 남지만, 남는 여백..
-
[유니티 수업] 0강 강의 목차[유니티] 동영상 수업 2022. 6. 2. 23:31
[유니티 기본]는 꼭 알아야 하는 것을 문서로 정리했습니다. 수업할때 사용하려고 했지만, 막상 수업을 진행을 해보니 조금씩 달라져서 수업과 유사하지만, 정확히 매칭되지가 않게 되었습니다. 수업 동영상을 주로 다루겠지만, 빠진 부분은 여기에 올리도록 하겠습니다. 01일차(6월 07일) - 유니티 개발 설정(UI 및 구성), 스크립트(C#), 가비지 콜렉션 02일차(6월 08일) - 유니티 변수, 구조체, 클래스, 블럭, 전처리기, 제어, 고급/저급 언어 03일차(6월 13일) - 설명 04일차(6월 14일) - 설명 05일차(6월 15일) - 설명 06일차(6월 20일) - 설명 07일차(6월 21일) - 설명 08일차(6월 22일) - 설명 09일차(6월 27일) - 스프라이트 10일차(6월 28일) -..
-
[유니티] 20강 스프라이트[유니티] 기본 2022. 6. 2. 23:07
유니티에서 제공하는 애니메이션을 쓰지말고, 직접 다루어 보자. 2디 게임을 제작하면서 굳이 유니티에서 제공하는걸 사용하는것 보다 직접 처리하는게 더 편할것 같다. 스프라이트 작업에 관련해서는 수업 시간에 자세히 다루는 걸로 하고, 이번 강의는 간단히 알아보자. Hero에 스프라이트를 적용해보자. 초기화 및 업데이트하는 곳이다. 0.2초마다 3장의 이미지가 번갈아 프레임이 변하는 로직이다. 유니티에서는 화면에 직접 렌더링을 하는 부분이 보이지 않는다. 개발자는 뿌려야 하는 부분만 설정 할 뿐이다. 특별히 대단한 코드는 없어서 설명할게 별로 없지만, 오히려 보이지 않으니 더 어렵다고 할 수 있다. 엔진단에서 이 코드가 실행되는 영역은 차후에 시간이 되면 설명하는걸로 하고 스프라이트는 마무리 한다. -끗-
-
[유니티] 19강 풀 메모리2[유니티] 기본 2022. 6. 2. 22:24
18강 Start()에 있는 내용을 함수로 만들었다. prefabs를 이용한 방법과 사용하지 않는 방법을 구분해서 함수로 만들었다. Start()함수에서 비활성화된 5개를 만든다. Hierachy에는 보이고, active가 false인 상태니까 Game뷰에서는 보이지 않는 상태다. 즉, 18강에서 말한것 처럼 Hierachy에 미리 위치해 있으니까 사용하고 싶을때 setActive(true)로 부르면 된다. fire()함수에서 Hierachy에 미리 만들어두고 비활성화 상태인 오브젝트를 찾아서 활성화 시키는 로직이다. 미리 만들어둔 개수가 부족할 경우, Hierachy에 개수를 추가한다. Ball.cs에서 Update()함수에서 화면에서 벗어나면 파괴하던것을 비활성화 시키는것으로 변경한다. 실행되는 화면..
-
[유니티] 18강 풀 메모리1[유니티] 기본 2022. 6. 2. 19:18
슈팅 게임에서 총알을 쏘는 장면을 상상해보자. 1. 총알을 만든다. 2. 총알에 방향과 속도를 넣어서 날아가게 한다. 3. 비행 물체와 부딪힌다. (5번으로) 4. (3이 일어나지 않고) 화면에서 벗어난다. 5. 총알을 파괴한다. 런타임중에 1과 5의 과정이 반복적으로 일어나면 부하가 많이 발생하고 속도 저하의 원인이 된다. 그걸 개선하기 위해서, 필요한 총알을 미리 만들어 두고, 필요할때마다 사용하고, 다 사용하면 원위치 시키는 방식이다. 이론적인 부분은 단순하고, 구현은 제각각 편할데로 만들면 된다. 게임에서 풀 메모리가 필수적인 부분이라 다양한 구현 방법을 알아두는게 좋다. 1. 객체 Hero를 만들고, 스크립트 파일(Hero.cs)을 추가한다. 2. 스크립트 파일(Hero.cs)에 방향키를 누르면..
-
[유니티] 17강 함수 간결화 및 호출 시점[유니티] 기본 2022. 5. 31. 01:12
1. Generic 제너릭은 이미 파일 입출력 코드에서 사용했다.(13강, 14강 참고) 앞서 본 코드는 원하는 리턴 타입을 받고 싶을때 사용했고, 이번에는 함수 호출시 임의의 타입을 파라미터로 사용 예다. 2. 델리게이트 C/C++ 함수포인트와 거의 같다. typedef int (*funcDelegate)(int a, int b); // c/c++ delegate int funcDelegate(int a, int b); // c# c/c++에서는 static 함수만 되지만, c#은 모두 허용한다. 신기하다. 그냥 감탄사가 나왔다. 정말 된다!! 지면이 부족해서 안 넣었지만, 다른 객체에 있는 함수도 똑같은 원리로 구동된다. 3. Event C/C++ 함수포인트와 비슷하지만, EventHander가 호출..