공부 41

Android process 의 waitfor() 호출 시 에러

void Func() { Process process = Runtime.getRuntime().exec(cmd); process.waitFor() } 아래는 유니티에서 호출하는 안드로이드 함수 내에서 프로세스를 실행을 하고 기다리기 위해 waitFor 을 호출했을 때 발생하는 컴파일 에러다. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 F:\Work\Unity_Projects\GSB\Unity\GSBGame\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\java\com\google\firebase\MessagingUnityPlayerActivity.java:124: error: unreported ..

공부/Unity 2023.12.27

c# try catch finally

try catch 를 쓰는 이유 - https://stackoverflow.com/questions/4540155/why-cant-i-write-just-a-try-with-no-catch-or-finally catch 를 쓰면 throw 한 exception 을 삼켜 버린다. 그러므로 catch 를 쓸거면 exception handling 과 로그를 남겨야 한다. 만약 적절한 exception handing 과 로그를 남기지 않을 거면 catch 를 쓰지 말고 exception 을 throw 하게 냅두는 것이 낫다. 이후에 당연히 throw 한 exception 을 보고 처리를 해야 한다. catch 를 쓰지 않고 try - finally 만 쓰는 경우도 있다. finally 는 exception 을 ..

공부/C++ \C# 2023.08.01

c# init 키워드

프로퍼티의 get 지정자에 private 을 붙이면 선언한 클래스(구문) 내에서만 수정이 가능하다. init 키워드를 사용하면 private 보다 더 제한된 방법으로만 변수를 바꿀 수 있다. init 키워드를 사용하면 초기화 시점 외에는 변수 변경이 불가능하다. class Person { public string Name { get; init;} private string _name; } int Main() { var john = new Person { Name = 1984 }; john.Name = 1926; //Not allowed, as its value can only be set once in the constructor } init 보다 값 변경을 더 제한하는 키워드는 readonly, con..

공부/C++ \C# 2023.07.26

c++, c#, java, python 언어들의 컴파일 과정과 특징들

c++ 과 c# 의 특징과 장단점 -> c++ 은 메모리 할당과 해제를 직접 관리 할 수 있어서 메모리가 한정적인 시스템에서 유리하다. c# 은 메모리를 가비지 콜렉터를 통해서 자동으로 해제를 해주기 때문에 편리하다. 하지만 c++ 에도 스마트 포인터가 생겨서 편리하게 메모리 해제를 맡길 수 있다. c# 은 가비지 콜렉터가 돌아가면 느려진다. c# 은 중간언어인 CIL(common intermeditate languate) 인 바이트코드 형식으로 변경 후 clr(common language runtime)이라는 환경에서 각 환경에 맞는 기계어로 컴파일 됩니다. 어떤 언어든지 clr 에서 돌아가는 언어인 cil 로 변경되는 과정을 거칩니다. clr 은 닷넷 프레임워크의 가상 머신입니다. clr 에서 컴파일..

공부/기타 2023.05.23

aos, ios 네이티브 빌드&패키징 vs 언리얼 모바일 패키징

참고 : https://creazier.tistory.com/15310767 [AOS] 1. java 코드 작성 2. java 코드 바탕으로 class 파일 생성 3. class 파일 dex 파일로 변환 4. dex 파일과 사용중인 리소스들을 `apkbuilder`로 apk 파일 생성 5. zipalign`으로 apk 파일 binary aligning 6. 앱 사이닝 (사이닝 = 구글 플레이스토어에 제출하기 위한 과정? apk에 키값이라고 불리는 문자열을 같이 포함하는 건가?) 7. `adb` 혹은 스토어를 통해 apk 다운로드 (Android ADB (Android Debug Bridge)는 PC와 스마트 폰 간에 통신을 할 수 있는 명령어도 도구입니다. 안드로이드 개발자에게는 apk 설치, log 출..

에셋의 이동 및 수정

에셋의 이름을 바꾸고 경로를 바꾸는 행동은 에디터의 컨텐츠 브라우저 내에서 해야한다. 컨텐츠 브라우저 외에서, 예를 들어 윈도우 파일 탐색기 상에서 에셋을 옮기는(사실은 package 를 옮기는 것이다) 행동은 에셋에 대한 참조 관계를 고려하지 않기 때문에 옮겨진 경로나 이름으로 참조 관계가 업데이트 되지 않는다. 컨텐츠 브라우저에서 에셋의 이름을 바꾸거나 옮기는 경우는 참조 관계가 맞게 업데이트 됩니다. 만약 컨텐츠 브라우저에서 에셋을 다른 경로로 옮긴 경우, 기존 에셋 위치에는 ∴리디렉터가 남게 됩니다. ∴리디렉터란? 에셋을 이동하거나 이름을 바꾸면 원래의 장소에 리디렉터라는 것이 남는다. 이 리디렉터는 새로운 에셋의 경로를 가지고 있다. 이 리디렉터를 이용해 에셋을 참조하고 있던 에셋들이 새로운 에..

Package과 Asset 의 차이

Package .uasset 파일 Asset 컨텐츠 브라우저에 나타나는 것들. .uasset 파일에 포함된 대표적인 오브젝트. UObject 를 상속한 어떤 오브젝트라도 패키지의 대표 오브젝트가 될 수 있다. 패키지(.uasset)에 포함된 것이라고 볼 수 있다. Object Path 패키지 이름과 에셋 이름을 합친 경로. 예를 들어 SM_Chair 이란 패키지가 있고 대표 에셋이 SM_Chair 이면 Object Path 는 Game/.../SM_Chair.SM_Chair 이다. 에셋 생성 에디터에서 우클릭해서 에셋을 생성한다. 에셋 생성은 에셋 팩토리를 이용해 생성한다. UFactory 를 상속 받아서 특정 에셋의 팩토리 클래스를 구현 할 수 있다. 팩토리는 에셋을 찍어내는 클래스. UFactory ..