Unity/C# 2022. 6. 8. 21:57[Unity] Renderer의 Materials 동적 변경

Renderer에 접근하여 Material들을 동적으로 바꿔줘야 할 때가있다. 처음 생각한 간단한 방법으로는 적용되지않아서 찾아낸 정보를 기록한다. 틀린예시 for (int i = 0; i < rend.materials.Length; i++) { rend.materials[i] = new Material(maskedShader); } 맞는예시 var rend = gameObject.GetComponentInChildren(); Material[] mats = rend.materials; for (int i = 0; i < rend.materials.Length; i++) { mats[i] = new Material(maskedShader); mats[i].CopyPropertiesFromMaterial(..

Unity/C# 2022. 5. 17. 13:34[Unity] JSON을 딕셔너리처럼 입출력하기

Unity의 JsonUtility를 사용하다보면 커스텀 클래스를 쉽게 JSON으로 파싱할 수 있지만 원하는 변수 몇개만 JSON으로 파싱해주는 기능이나, 파싱 이후에 변수룰 추가, 삭제, 수정을 할 수 있게해주는 기능이 없다. 그래서 이런식으로 한글자 한글자 입력해서 JSON으로 만들어 쓰다가 $"{{\"account_uuid\": \"{account_uuid}\", \"email\": \"{email}\", \"password\": \"{hashed_password}\", \"team\": \"{team}\"}}"; 너무 불편해서 찾아낸 방법이다. JSON .NET For Unity | Input Management | Unity Asset Store Get the JSON .NET For Unity ..

Unity/C# 2022. 5. 9. 14:54[Unity] Raycasthit.transform과 Raycasthit.collider.transform

Raycasthit은 구조체 이고 레이캐스트를 할 때 맞은 오브젝트에 대한 정보를 담아서 out하는 구조체이다 그 안에는 바로 접근가능한 transform과 collider멤버를통해 collider.transform으로 접근가능한 transform이 있다. 둘의 차이는 만약 레이캐스트에맞은 오브젝트가 리지드바디가 있을경우 Raycasthit.transform은 리지드바디가 붙어있는 Transform을 반환한다. 예를들어 이런식으로 루트부모에 리지드바디를달고 그 자식에 콜라이더를 달아놓으면 자식 콜라이더의 사이즈대로 충돌을 체크하겠지만 Raycasthit.transform은 리지드바디가있는 루트부모인 ZergelingMonster를 반환한다. 여기서 콜라이더가 붙어있는 오브젝트를 반환받고싶다면 Raycas..

[Unity] 길찾기 에셋을 활용한 Wander구현
Unity/C# 2022. 2. 24. 10:24[Unity] 길찾기 에셋을 활용한 Wander구현

Wander : 떠돌다 RPG게임에서 야생동물이나, 오픈월드게임에서 시민NPC들이 정처없이 떠도는걸 말한다. 활용한 에셋: A* Pathfinding Project Pro | AI | Unity Asset Store Get the A* Pathfinding Project Pro package from Aron Granberg and speed up your game development process. Find this & other AI options on the Unity Asset Store. assetstore.unity.com 에셋스토어에는 100불짜리 에셋밖에없지만 제작자 홈페이지에 들어가면 여기서 무료버전도 배포하고있다. 몇가지 기능이 제한돼있다는데 그럼에도 충분히 원하는기능을 구현하기에는 ..

Unity/C# 2022. 2. 22. 17:26[Unity] FSM패턴

유한 상태 기계 (Finite State Machine) 정의 컴퓨터 프로그램을 설계할 때 쓰이는 모델이다. 컴퓨터 내에 유한한 상태를 가지는 기계가 있다고 가정하고, 컴퓨터는 오로지 하나의 상태만 갖고 있을 수 있으며 각 상태별 동작과 상태끼리의 전이에 대한 내용을 설계하게 된다. 유니티의 Animator처럼 한State에 머무르며 행동을하고 다른State로 전이(Transition)을 하며 행동을 변경하는 시스템이라고 생각하면 편하다. 이미지 출처 : https://boycoding.tistory.com/262 AI를 코딩으로 만들때 이 패턴이 유용한데, 기존에 애용하던 패턴은 Switch문을 활용한 이런식이다. 방법 1 // FSM을 활용한 몬스터 컨트롤러 public abstract class M..

Unity/C# 2022. 1. 28. 10:29[Unity, C#] Vector3 회전

Vector3(1, 0, 0)을 y출으로 45도 회전한다면 vector3 v = Vector3.right; v *= Quaternion.AngleAxis(-45, Vector3.up); //또는 v *= Quaternion.Euler(0, -45, 0); 처음 생각으로는 Vector3에 회전시키는 확장메소드가 있을줄알았는데 Quaternion이였다.

image