Unity&C# 28

CSVtoScriptableObject

Csv파일로부터 ScriptableObject를 만드는 Unity Util을 개발하였다.github개발 기간 10월 25일개요CSV파일로부터 ScritableObject를 생성하는 클래스구현 상세CsvtoSOMakerFormat함수들을 만들어 string으로 클래스 문자열을 만듬.string.Format을 사용하다가 제대로 fotmat에 글이 들어가지 않거나, tab이 안맞는 문제들이 있어 함수로 구현함.csv파일의 첫번째줄로 필드이름, 두번째 줄로 타입 정의.CSVDataLoaderData의 class가 만들어지고나서, Csv의 데이터를 클래스에 넣어 오브젝트로 만들어주는 함수C#의 리플랙션을 활용하였음.dataCSVDataLoaderCSVDataLoader로 데이터를 로드해 ScriptableObj..

Unity&C# 2024.10.30

ScriptableObject의 사용에 대해

이번 과제에 아이템을 Csv to ScriptableObject를 직접 구현하여 사용하였다.Excel to json to class....ㅋㅋㅋ를 만들었던 경험에 빗대어 Scriptable Object안에 데이터 리스트가 들어가 있도록 구현하였다.근데 scriptable object가 오브젝트하나하나로 나오는것과 DB형식으로 리스트로 나오는 것 둘 중 어느 것을 주로 사용하는지, 어떤게 효율적인지 궁금해졌다.

Unity&C# 2024.10.30

[Unity] Rigidbody ForceMode

Unity의 AddForce 함수에서 사용하는 ForceMode는 오브젝트에 힘을 가하는 방식과 효과를 조절할 수 있는 옵션1. ForceMode.Force지속적인 힘을 가하는 방식. 프레임마다 일정한 크기의 힘이 적용되어 물체의 질량을 고려해 가속도가 증가.Newton의 두 번째 운동 법칙 F = ma를 사용하여 힘을 계산하므로, 질량이 큰 오브젝트는 더 천천히 가속.용도: 중력이나 지속적으로 작용하는 바람 등, 꾸준히 적용되는 힘을 표현할 때 적합.rigidbody.AddForce(direction * power, ForceMode.Force);2. ForceMode.Acceleration가속도를 직접 적용하는 방식. Force와 비슷하지만, 질량을 무시하고 가속도만을 추가.가벼운 물체나 무게와 상관..

Unity&C#/Unity 2024.10.29

[Unity] Tag와 Layer의 성능차이

충돌처리 등을 수행하고 충돌된 물체를 검사할 때 tag를 사용하거나 layer를 사용할 수 있다.이때 tag를 사용하는 것과 layer를 사용하는 것의 성능차이가 궁금해졌다.CompareTag()간단한 문자열 비교 연산.유니티 엔진 내부적으로 최적화 되어 있음gameObject.layer==LayerMask.NameToLayer()레이어 값은 정수형 숫자로 저장되어 있어 매우 가벼움결론별차이 없다..아주 조오금 layer비교가 빠를 수 있다.

Unity&C#/Unity 2024.10.28

[Unity] Monobehaviour를 상속받지 않은 클래스에서 Coroutine 실행하기

몇 초뒤 실행되는 함수를 구현하려면?Invoke(function, time)time뒤 function을 실행시키는 아주 간단한 방법.하지만 Monobehaviour를 상속받는 클래스에서만 사용할 수 있음.Coroutin몇초마다, 몇초뒤 행동을 수행하는 간단한 방법이 또한 Monobehavour 를 상속받는 클래스에서 코루틴을 시작시킬 수 있음.Task비동기 프로그래밍으로 수행하는 방법유니티의 타이밍이랑 안맞을 수 있음.Task는 사용하기 싫은데.. 몇 초후에 실행되는 함수를 사용하려면..다른 객체에서 StartCoroutine을 시작시키면됨.public class TimeControl : IItemEffect{// 생략 public void Affect() { Time.timeSc..

Unity&C#/Unity 2024.10.20

[Unity] OvelapSphere

내배캠 꾸준별 실습에서 내적을 사용해서 시야각 내의 소행성을 검출해야하는 구현과제가 있었다.근데 콜라이더도 없고, 딱히 레이를 사용하는 것도 아닌 것 같았다.내적은 하겠는데 그래서 콜라이더 없이, ray없이 주변에 오브젝트를 어떻게 검출하는데?Physics.OverlapSphere일정거리내의 콜라이더를 검출해내는 함수public static Collider[] OverlapSphere(Vector3 position, float radious, int layerMask=AllLayers, QueryTriggerInteraction=QueryTriggerInteraction.UseGlobal)메모리를 할당하므로 대신 다른걸 사용하는게 좋다고 doc에 되어있다.Physics.OverlapSphereNonAll..

Unity&C#/Unity 2024.10.17

[Unity] Resources.UnloadAsset()

Resources.UnloadAsset()로드된 에셋을 언로드 하는 메소드이미 인스턴스화된 게임 오브젝트에는 영향을 미치지 않음.public class UIManager{ private Dictionary _cache; // 싱글톤 초기화 public void OpenPopupUI(string path) { if(!_cache.ContainKey(path)) { _cache.add(string,GameManager.Instantiate(Resources.Load($"Prefabs/{path}")); } /*캐쉬에서 object를 꺼내서 intantiate시키는 코드*/ } public void Clear..

Unity&C#/Unity 2024.10.16

[Unity] Input system - multitap value issue

Multi tap을 사용하려고 하는데 키보드 입력에서 Interaction prorperties Action을 Value로 두면 한번만 눌러도 작동해버려요.디버그를 찍어보니까 한번만 눌렀는데 로그가 두번찍혀요.Value활성화 될때 (임계 값 이상으로 눌렸을 때) InputAction.Started InputAction.Performed값이 변경될 때마다 InputAction.Performed더 이상 활성화 되지 않을때 (임계값 이하로 눌렸을 때) InputAction.Performed아래의 Button을 사용하면 문제를 해결 할 수 있다.원인을 모르겠다.Button활성화 될때 InputAction.Started임계값 이상일 때 InputAction.Performed비활성화 될 때 InputAction.C..

Unity&C#/Unity 2024.10.15