본문 바로가기

Programming97

[Unity, C#] Serialize를 활용하여 데이터를 파일로 저장하기 (List, Dictionary, Array, Class) ✔ Unity, C# - 배열,리스트,딕셔너리를 데이터 파일로 저장하기 데이터베이스를 활용하지 않고 로컬내에서 데이터 관리를 해야하는 경우에는 보통 파일단위로 관리를 한다. 예를 들어 사용자마다 게임 환경 설정(마우스감도, 해상도 등)을 하고 저장하면 설치된 내 게임만 저장되면 된다. 데이터를 파일로 저장하는 방법은 다양하다. 가장 쉽게 사용할 수 있는 방법은 Serialize를 활용하는 방법이다. 저장하려고 하는 Class위에 [Serializable]을 선언해주어야 한다. ■ Class 데이터를 파일 저장 및 로드 예제 이 예제는 GameObject의 Position과 Name을 저장하고 불러오는 간단한 예제입니다. using System.Collections; using System.Collecti.. 2022. 9. 22.
[Unity] 충돌호출 함수 OnTrigger와 OnCollision 사용법 및 차이 ✔ OnTrigger, OnCollision 함수 호출 설정 방법 차이점 비교, Collider 호출 함수 자주 사용하는 함수인데 한번씩 왜 함수가 동작을 안하지!? 하는 경우가 종종있다. 함수가 호출되기 위한 조건이 있는데 잊어버리기 쉽다. 먼저 두 이벤트의 차이부터 알아보자. OnTrigger와 OnCollision 모두 유니티에서 충돌을 체크하기 위한 함수이다. ◆ 차이 비교 ▶ OnTrigger - isTrigger를 통해 물체간에 관통해야만함 (자동차가 물건을 부딪히고 물건이 날아가는게 불가능) - 물리 연산을 하지 않는다 - Collision 보다 연산이 적음 - 총알처럼 어떠한 물체와 부딪혔을때 사라지거나 텔레포트하거나 할때 활용 ▶ OnCollision - 물체 관통이 불가능 (말그대로 현.. 2022. 9. 15.
[Unity] [해결] WebGL 빌드 시 나타나는 오류 - IL2CPP 새 프로젝트를 생성하고 WebGL로 플랫폼 변경한뒤에 빌드하니까 오류가 나타났다. 스크립트도 모델도 아무것도 안올렸는데 왜!!? 에러내용은 아래와 같다. Exception: Failed running C:\Program Files\Unity\Hub\Editor\2020.3.9f1\Editor\Data\il2cpp/build/BeeSettings/offline/bee.exe --useprebuiltbuildprogram --no-colors stdout: [ ] Require frontend run. tundra.dag no longer valid. FileSignature timestamp changed: il2cpp_settings.json [ 0s] Executed build program. Crea.. 2022. 6. 22.
[Unity] URP 조명 설정 방법을 알아가자! (Part.2) - Light Probe ✔ 유니티 조명 설정하자! Light Probe Group 생성 및 사용 방법 앞서 Part.1에서 우리는 Lightmap 이란 것을 알아봤습니다. 2022.03.04 - [Programming/Unity] - [Unity] 조명 설정 방법을 알아가자! (Part.1) - Lightmap 만들고 적용하기 [Unity] 조명 설정 방법을 알아가자! (Part.1) - Lightmap 만들고 적용하기 ✔ Unity - Lightmap 이란? 유니티에서 비주얼에서 가장 중요한 조명 설정입니다. Light 이론만해도 어마어마한 분량이라 기본 이론과 많이 사용되는 핵심 기능들만 설명드리겠습니다. Lightmap 이란 말 timeboxstory.tistory.com 일단 Lightmap이란것을 왜 사용해야하냐? 당.. 2022. 6. 3.
[C#] 리틀 엔디안, 빅 엔디안과 변환 방법을 알아보자 ✔ Little endian, Big endian C# endian Convert 엔디언(Endianness)은 쉽게 말해 배열에 바이트 데이터를 넣을때 바이트 순서를 의미한다. 흔히 통신을 이용하여 데이터를 주고 받을때 이 엔디안을 고려하며 프로그래밍을 해야한다. 대표적인 엔디안의 종류는 little endian, big endian이 있다. 우리가 주로 이용하는 컴퓨터는 대부분 윈도우나 인텔 기반의 리눅스가 많다. 이 시스템들은 리틀 앤디안 방식으로 돌아간다. 하지만 네트워크상으로 데이터를 전송할 때에는 빅 엔디안 기준으로 송수신된다. ● 빅 엔디안 big endian : 메모리 공간의 시작주소에서 메모리 마지막 주소 순서로 쓰는 방식 0[시작주소] -> 100[마지막주소] ● 리틀 엔디안 littl.. 2022. 5. 27.
[Unity] 유니티 기초 탈출기 - Part.03 - 스크립트 편 ( 사용자 입력 이벤트 ) ✔ 기초탈출기 - 사용자 입력 처리 공중부양 게임(?) 제작 이번에는 사용자 입력 이벤트에 대해서 알아보겠습니다. 대표적인 사용자 입력 이벤트는 사용자가 마우스로 클릭하거나 키보드를 클릭했을때 발생되는 이벤트입니다. 거의 대부분의 기능은 UI의 버튼을 생성해서 버튼 누를때 어떠한 동작을 하게 됩니다. 하지만 가끔 UI 버튼이 아니라 화면을 클릭했을때 구현을 해야할 경우가 있습니다. 예를 들어 화면을 누르고 드래그하면 화면이 이동된다던지... 휠로 줌 인/아웃을 구현한다던지 이런 기능은 버튼으로 할 수가 없잖아요? 사용자 입력이 언제 발생될지 모르기때문에 대부분이 Update 함수안에 구현되어야합니다. ● 마우스 입력 이벤트 이벤트 설명 GetMouseButton (int button) 마우스가 눌러지고 .. 2022. 5. 24.
[Unity] 유니티 기초 탈출기 - Part.03 - 스크립트 편 ( GameObject ) ✔ Unity 기초탈출기 - 게임오브젝트 활성화/비활성화 안녕하세요. 이번에는 GameObject 클래스와 활용방법에 대해서 알아보는 시간입니다. 이전 포스트에서 Getcomponent를 해서 Transform을 사용하는 간단한 예를 해보았었습니다. 다시 한번 리마인드하는 마음으로!! GameObject를 생성했을때 Transform의 컴포넌트는 무조건 자동으로 생긴다고 했죠? (삭제도 안되구요) 그리고 Transform 밑에 보이는 속성 (Position, Rotation, Scale)을 가져와서 값을 찍어보기도 했습니다. GameObject와 Transform은 셋트라고 보시면됩니다. 서로 뗄래야뗄수없는 관계. 왜냐!! GameObject에는 Transform이 항상 포함되어 있으니까!!! (삭제도 .. 2022. 5. 12.
[C#] int, float, bool,struct를 Null 로 초기화방법 - System.Nullable ✔ Value Type 을 Null로 초기화하기 struct 멤버변수를 Null로 초기화하기 System.Nullable 일반적으로 int, float, double, short 등등 (숫자로 표현되는것)은 모두 Null의 값을 가질 수 없다. (struct도 포함) int k = 1은 되지만 int k = null 을 선언하면 초기화 오류가 나타난다. 그래서 많은 사람들이 특정 초기값이라고 생각하며 int k = -999 이런식으로 사용하며 if(k == -999) 일때는 초기값이라고 판단하도록 했었다. 지금은 Nullable을 사용하여 null처리가 가능해졌다. 사용방법은 Type 뒤에 ?를 넣으면 된다. ● Value Type 을 Null로 초기화하여 사용방법 //Value Type 사용법 int?.. 2022. 5. 3.
[Unity] 유니티 기초 탈출기 - Part.01 - 로컬, 글로벌 좌표계 ✔ Unity3D - Transform Local, Global 로컬변수, 글로벌 변수 값 가져오기 Positon, Rotation, lossyScale 값 변경하기 안녕하세요. 유니티에서는 로컬 좌표와 글로벌 좌표의 두가지를 가지고있습니다. ● Local 좌표 로컬좌표란? : 오브젝트 기준 시점의 좌표 ▷ Local 좌표 확인하기 유니티에서 Cube를 하나 생성합니다. 그리고 Position을 1,0,0으로 셋팅합니다. 다시 Cube를 하나 더 복사합니다. 그리고 아까 생성한 Cube의 자식으로 넣고 Position을 1,0,0을 넣어줍니다. 1번째 Cube와 2번째 Cube 모두 Positon의 값을 1,0,0 을 입력했는데 같은 위치가 아니라 2번째 Cube는 x축 1만큼 더 이동되어있는것을 볼 수.. 2022. 5. 2.