전체 글
-
[유니티] 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가 호출..
-
[유니티] 16강 기타(namespace, 접근제한, 속성, 참조, 추상, 가상)[유니티] 기본 2022. 5. 31. 01:11
1. namespace, using 딱히 특별한게 없는 흔한 코드입니다. CodeNamespace라는 네임스페이스로 감싸고, 그 안에 Code라는 클래스를 만들었습니다. 아래는 CodeNamespcae.Code 라고 위에서 만든 클래스에 접근하는 코드입니다. CodeNamespace.Code이렇게 객체를 계속 사용하기에는 코드 작성도 불편하고, 나중에 코드의 가독성이 떨어지게 됩니다. 네임스페이스가 모호해 보이지 않는이상 using 네임스페이스명; 으로 긴~ 이름을 가볍게 작성할 수 있도록 할수 있습니다. 이제 유니티에서 C#코드를 만들면, 기본적으로 상단에 있는 using System.C~; using UntityEn~; 이 붙었는지 이해 했을거라 생각된다. 그럼 왜? 네임스페이스를 쓰는지 생각해 봅시..
-
[유니티] 15강 전처리기와 코루틴[유니티] 기본 2022. 5. 31. 01:10
1. 전처리기 C#에서의 전처리기는 다르다. 그냥 다르다. 없는것 만도 못하다. 이럴바엔 차라리 없는게 더 낫다. 기대하지 말고 살펴보자. 1. #define 심볼 C/C++ 치환하는 내용은 포함되어 있지 않다. 2. #if #elif #endif C/C++ 무조건 true 혹은 false 여야 한다. 3. #region #endregion 코드만 접을수 있게 해준다. 클래스나 함수는 비주얼 스튜디오에서 기본적으로 지원한다. 다만 필요한 블럭을 접고 싶을때 사용할수 있게 해준다. 근데, 필요한가? ㅋㅋ 어이없다. 그냥 전처리기는 없다고 보는게 마음 편하다. 2. 코루틴 53, 54, 71 line 에 있는 함수명이 doSomething이라는 이름으로 사용하면 doSomething(int a)함수가 아닌 ..
-
[유니티] 14강 파일 입출력2[유니티] 기본 2022. 5. 31. 01:09
a.txt, b.txt파일의 실제 경로는 다른 A와 B의 다른 폴더에 존재한다. Assets > A > Resources > a Assets > b > Resources > b 어디 폴더에 있는 Resources 폴더든 현재경로 처럼 인식한다는걸 특이하다. a라고 하더라도, Assets > A > Resources > a.txt 파일을 정확히 데이터를 가져온다. 출력을 해보면 정확히 잘 출력한다. 다음은 개발 중에 자체 에디터에서 별도의 포멧으로 저장된 파일을 읽어 들이는 예시다. C/C++이나 Object C에서 사용되는 방법과 별로 다르지 않다는걸, 다른 언어에서 파일 입출력을 해본 사람이면 쉽게 이해가 될것이니 설명은 생략한다. 이번 챕터에서 기억해야 하는건 Resources폴더가 어디에 있던 알아..
-
[유니티] 13강 파일 입출력1[유니티] 기본 2022. 5. 30. 21:35
고급언어로 갈수록 다양한 함수들이 가득하지만, 실제 사용하는데 있어서 다 필요하지도 않고, 언제 그렇듯 필요한건 바이너리로 읽고 쓸수 있으면 그만이다. 대략 이정도면 파일 입출력은 끝난거나 다름 없다. 하나씩 확인해보자. 일단 문자열을 저장하고 읽어보자. 문자열이 오고 갈수 있는 함수를 만들었다. 특정 개발 플랫폼에서 사용되는 패키지, 클래스, 함수들이 워낙 다양해서 내가 쓰기 편한 이름으로 바꾸는것에 불과하다. Encoding을 쓰기 위해서는, 상단에 using System.Text; 추가 해야 한다. 12강에서 사용한 버튼의 오른쪽 버튼을 누르면 저장 및 로드를 확인 해보도록 하자. 프로젝트가 있는곳에 파일이 잘 저장되고, 잘 읽는것을 확인할수 있다. 확인차 만든것이고, 게임이나 앱에서는 훨씬 더 복..
-
[유니티] 12강 오디오[유니티] 기본 2022. 5. 30. 21:34
오디오를 플레이하는데 여러가지 방법이 있지만, 굳이 다 알 필요없을거 같다. 솔직히 다른 방법을 알아보긴 했지만, 그딴게 왜 필요한지 모르겠다. 적어도 프로그래머에게는 필요없는것들이다. 원래 하던대로, 단순하게 plya함수만 호출하면 음원이 재생이 되도록 했다. 처음 시작되는 Scene에 객체하나 만들고, 그 객체에 스크립트 파일을 연동해서 프로그램이 끝날때까지 사용한다. 사운드 재생 클래스는 싱글턴 패턴을 이용했다. MonoBehaviour상속 받아서 처리해야 하는데, gameObject가 부모클래스에서 만들어져 오는 구조라서, 일반적인 C++이나 JAVA와는 다른 구조를 가진 형태이다. (싱글턴 패턴을 여기에 다 담기에는 힘드니까, 다른 게시글로 차후에 올리는걸로...아니면 수업시간에 하는걸로 미룬다..
-
[유니티] 11강 Canvas(버튼)[유니티] 기본 2022. 5. 30. 21:33
버튼을 만들어서 버튼을 누르면 캐릭터가 움직이도록 해보자. 1. [마우스 우클릭] 혹은 Hierach + 버튼을 누르고, 메뉴에서 UI/Button 선택한다. 2. 버튼의 이미지를 사용한다면, 텍스트가 필요없어서 삭제한다. 3. 미리 준비해둔 버튼 이미지를 지정한다. 4. 원하는 위치에 값을 입력해서 원하는 위치한다. 5. [1~4]와 같은 방법으로 ButtonRight도 만들었다. 6. 방금 만든 버튼에 연동이 될 스크립터를 작성한다. 단순하게, 왼쪽버튼, 오른쪽버튼 이벤트가 일어날경우 실행할 함수를 만들었다. 7. 버튼 객체와 스크립트 파일을 연동 시킨다.(드래그 & 드롭으로 가능하다.) 8. On Click () 메뉴의 + 버튼을 누른다. 9. 1) 객체를 드래그 & 드롭을 해서 실행하는 객체를 지..
-
[유니티] 10강 Canvas(텍스트)[유니티] 기본 2022. 5. 30. 21:32
게임 상의 정보를 표시하는 가장 기본이 되는 텍스트를 디스플레이 해보겠습니다. 프로젝트에서 처음으로 UI를 추가하면 팝업이 뜨는데, [Import TMP Essentials]를 클릭하면 뭔가 설치가 진행됩니다. 설치완료후, 방금 만든 객체를 원하는 이름으로 교체합니다. Cavas와 EventSystem이 나옵니다. 이제 가장 먼저 해야 할것이 Canvas설정입니다. Constant가 있는 있는 2개는 딱봐도, 고정해서 사용할때 옵션임을 알수 있습니다. 게임을 서비스하려면 수많은 화면에 비율적으로 대응해야 함으로 Scale With Screen Size으로 선택하고, 1136x640, 0.5로 설정했습니다.(아이폰 5사이즈 레티나전 사이즈이며, 1280x720과 종횡비율은 같습니다) alt, shift, ..