분류 전체보기
Unity에서 csv파일 만들기
레벨 디자인을 위해 ScriptableObject 파일들의 정보를 텍스트 파일로 만들 필요가 있어서 데이터를 엑셀로 만드는 방법을 찾다가 Nuget 패키지를 설치해 사용 해보려 했는데 using이 되질 않아 일단 내가 필요한 데이터들을 csv파일로 만들어봤다. 코드 using System; using System.Collections.Generic; using System.IO; using UnityEngine; public class CSVWriter { static Dictionary excel = new Dictionary(); public static void Add(string filename ,params string[] datas) { string cell = string.Join(",", ..
Unity에서 게임 오브젝트의 Null 체크 속도 비교
Unity 개발을 하다 보면 게임 오브젝트의 Null 체크를 자주 사용하게 됩니다. 게임 오브젝트가 Null인지 확인하기 위해 is 연산자와 == 연산자를 사용할 수 있습니다. is 연산자와 == 연산자의 차이점 is 연산자는 객체의 참조 값이 Null인지 확인합니다. == 연산자는 객체의 값이 Null인지 확인합니다. is 연산자의 장점 == 연산자보다 빠르다. 객체의 값이 Null인지 확인하지 않는다. == 연산자의 장점 is 연산자보다 간결하다. 객체의 값이 Null인지 확인할 수 있다. JetBrain Rider의 제안 최근 필자는 IDE를 VSCode에서 JetBrain Rider로 바꾸었다. Rider에서는 다음과 같은 제안을 했다. Comparison to 'null' is expensive..
Microsoft.CodeAnalysis.LanguageServer client: couldn't create connection to server.
Mac OS에서 VS Code로 C# 프로젝트를 열 때 다음과 같은 에러가 발생하는 경우가 있습니다. Microsoft.CodeAnalysis.LanguageServer client: couldn't create connection to server. Mac OS에서 VS Code로 C# 프로젝트를 열 때 다음과 같은 에러가 발생하는 경우가 있습니다. 이 에러는 VS Code의 C# Extension 버전을 최신 버전으로 사용해 발생하는 경우가 많습니다. 그 경우에는 C# Extension의 버전을 다운그레이드 하면 됩니다. 필자의 경우 1.xx 버전에서도 1.24 version을 사용하였고(1.25 이상은 에러 발생 ), 현재 최신 버전인 2.8.23으로 업데이트 했다가 에러가 발생해 다시 2.5.30..
C#의 정적 타입 정보 연산자
C#에서는 정적 타입 정보 연산자를 사용하여 변수, 메서드, 클래스 등의 타입 정보를 확인할 수 있습니다. 정적 타입 정보 연산자는 다음과 같습니다. nameof typeof type.GetFields nameof 연산자 nameof 연산자는 변수, 메서드, 클래스 등의 이름을 문자열로 반환합니다. nameof 연산자는 다음과 같은 형식을 사용합니다. nameof(변수 또는 메서드 또는 클래스) 예를 들어, 다음과 같이 사용할 수 있습니다. // 변수의 이름을 문자열로 반환합니다. string variableName = nameof(myVariable); // 메서드의 이름을 문자열로 반환합니다. string methodName = nameof(myMethod); // 클래스의 이름을 문자열로 반환합니다..
4자 축양장 DIY - 3차 완성
쿠팡으로 주문한 알루미늄 멀티탭을 축양장 중간에 설치해주고 기존 어항을 옮겨주었다 원래 있던 철제 축양장을 빼고 원목 축양장을 밀어서 위치 잡는게 수월해 보였다 백스크린이 없는 어항에 검은색 시트지를 붙여주고 축양장을 옮겨 자리를 잡아주었다 2자 어항을 물을 어느정도 빼고 옮겨서 자리 맞춰놨는데 생각해보니 백스크린 작업을 안했다...😭😭😭 하는 수 없이 뒤로 손을 넣어 시트지를 붙이고 ㄱ모양 부분만 잘라주었다 나머지 ㄴ부분은 나중에 리셋할 때쯤 잘라야겠다 좋다고 해서 새로 사 본 스폰지 여과기 기존 쓰던 것들은 부착하는 뽁뽁이가 자꾸 떨어져서 나를 힘들게 했다 일단 물부터 채워주고 브로와 에어호스를 연결할 것이다 지금 사용중인 브로와는 40W짜리로 조광기를 통해 출력을 약하게 해놓아도 소음이 있어서 에어..
4자 광폭 축양장 DIY - 2차
에어라인 설치하고 입수라인까지 완성!! 120 X 45 짜리 우레탄 매트를 구매해서 깔았는데 생각보다 가격이 나가네요...ㅠ 원터치 피팅기도 Y자 모양을 사서 깔끔하게 두개씩 라인을 빼려고 했는데 성격도 급하고 택배비 아까워서 전에 쓰던 3구 분배기 4개를 설치했습니다. LED에 전원을 공급하는 SMPS도 안보이게 잘 숨겨서 설치해주고 선도 깔끔하게 정리!!! 급한대로 테이프 집에 있던걸로 했는데 생각보다 깔끔하지 않네요... 먼저 설계를 하고 만들었어야 하는데 그냥 생각대로 막 하다보니 깔끔하지 못하네요 필요한 물건들도 하다가 없어서 주문하고 배송오는거 기다리고 만드는데 오래 걸리게 생겼네요 ...ㅎ 내일은 오늘 주문한 알루미늄 멀티탭을 설치할건데 깔끔하게 만드려면 숨겨야하는데 코드를 뺏다 꼈다 불편할..
Unity의 WaitUntil 코루틴
Unity의 WaitUntil 코루틴은 특정 조건이 만족될 때까지 기다리는 코루틴입니다. WaitUntil 코루틴은 다음과 같은 형식을 사용합니다. public IEnumerator WaitUntil(Func predicate) { while (!predicate()) { yield return null; } } WaitUntil 코루틴은 predicate() 함수를 사용하여 특정 조건을 확인합니다. predicate() 함수가 true를 반환하면 WaitUntil 코루틴은 다음 코드로 이동합니다. predicate() 함수가 false를 반환하면 WaitUntil 코루틴은 yield return null을 반환하여 다음 프레임으로 이동합니다. WaitUntil 코루틴의 사용 예 WaitUntil 코루틴..
IEnumerator 메서드에서 async await 사용
최근 작업중인 게임 데이터를 Local에 저장하던 것을 Firebase의 Database로 옮기는 작업을 진행하고 있다. DB에 데이터 저장은 잘되는데 Load가 제대로 되질 않아 삽질을 했던 경험을 공유하고자 한다. 내 프로젝트의 GameManager는 게임을 시작할 때 게임의 구성을 갖추는 셋팅을 할 때 IEnumerator 함수를 통해 플레이어를 생성 및 초기화하고 게임을 구성한다. Firebase에서 데이터를 가져오기 위해 FirebaseManager에 접근해 데이터를 로드하는 async 함수를 실행하면 Unity가 작동을 멈췄다. Unity의 IEnumerator 함수안에서 async 사용시 응답없음 문제가 발생하는 이유는 IEnumerator 함수가 Deferred Execution을 사용하기..