본문 바로가기

Pointer / Reference 차이점 우선 reference도 결국 내부적으론 Pointer를 사용하므로 작동원리는 동일하다.하지만 차이점이 몇가지 존재한다. Pointer 1) null값 허용2) int *p = &a; // 대상의 주소값을 할당3) 참조대상 변경가능 Reference 1) null값 불가능2) int &p = a; // 참조 대상을 그대로 할당3) 참조대상 변경불가 C++는 기본적으로 함수로부터 객체를 전달받거나 함수에 객체를 전달할 떄Call by value 방식을 사용 이는 복사생성자로 인한 고비용의 연산, 함수 매개변수는 실제 인자의 사본을 통해 초기화, 어떤 함수를 호출한 쪽은그 함수가 반환한 값의 사본을 돌려받음사본 만들어 내는곳 = 복사생성자 Call by reference 사용시 객체 그대로를 전달하기 떄문에..
Mono / Nuget / .NET Framework / .NET Core / Xamarin / Manifest Mono .Net Framework의 OpenSource 개발 Platform으로서 Cross - Platform Application 개발을 지원하며C#과 CLI에 기반을 두고있음(개발자들이 쉽게 Cross Platform Application을 만들 수 있도록 고안된 Software Platform) Nuget .NET을 포함한 Microsoft개발 환경 Platform을 위한 Package ManagerOpen source 기반의 library들을 solution에서 쉽게 가져와 쓸 수 있도록 해주는 도구 .NET Framework Computer의 스펙에 관계없이 VS로 작성한 프로그램이 잘 돌아가도록 하게 해주는것(32bit, 64bit 컴퓨터 관계 없이 잘 작동되게 해주도록, 통일된 규정에 때..
Dictionary C# / Dictionary == C++ / unordered_map C# / SortedDictionary == C++ / map C++ / multimap을 통해 중복키를 혀용한다.C# / Dictionary의 경우 중복키 불허용한다. C++ / map 은 key값을 모를때 itorator로 for문을 이용한 순차접근을 해야하지만C# / dictionary는 keyvaluepair로 foreach문을 이용한 순차접근을 해야한다.
Unity에서의 Variants란? Asset bundle을 공부하다보니 Variants라는 단어가 계속나왔다. 사전에 찾아보니 변종이라는데 보니 Asset bundle뿐만이 아니라 shader나 다른곳에서도 Asset bundle variants, Shader variants, Prefab Variants 등 여러곳에서 사용되는 단어였다. Prefab Variants는 우선 프리팹 변종 (Prefab Variants): 유연한 프로퍼티프리팹 변종(Prefab Variants)은 특정 프리팹에 대한 미리 지정된 여러 개의 차이(variations)들을 발생시키는 용도로 적합하다.기본적으로 프리팹 변종은 특정 Prefab의 오브젝트들과 프로퍼티들을 상속한다. 그러나 동시에, 사용자는 해당 프로퍼티를 오버라이드하고 신규 컴포넌트나 GameOb..
Asset Bundle Manager Asset Bundle Manager 이름 그대로 asset bundle을 효율적으로 사용할 수 있도록 만들기 위해 제작된 도구이다. Asset bundle Manager Package를 download하고 import하면 새로운 API호출이 추가될 뿐만 아니라 일부 Editor 기능이 추가되어 작업과정을 간소화 시켜준다. 이 기능은 Asset menu option에서 찾을 수있다. Assetbundles에는 다음과 같은 Option이 있다. Simulation Mode Simulation Mode를 활성화 하면 실제로 asset bundle을 build하지 않은 상태에서도 asset bundle manager가 asset bundle과 함께 작동할 수 있게 된다. Editor는 asset bundle에..
Asset bundle 사용법 Unity 5 기준 Asset bundle을 load 하는 방법은 4가지의 API를 사용할 수 있다. 4가지 API의 동작은 Asset bundle이 load되는 flatform과 build될때 사용되는 압축방법(Uncompressed, LZMA, LZ4)에 따라 다르다. 작업에 사용할 4가지 API -AssetBundle.LoadFromMemoryAsync -AssestBundle.LoadFromFile -WWW.LoadfromChacheOrDownload (사용하면 안됨, 아래있는 UnityWebRequest로 사용할것 / 이유는 다른글에서 설명했음) -UnityWebRequest, DownloadHandlerAssetbundle (Unity 5.3 or newer) AssetBundle.LoadFr..
대표적인 Memory leak 발생 유형 Singleton static instance 더이상 사용하지 않는 singleton객체의 OnDestroy( )함수에서 반드시 instance = null; 처리를 해 주어야 한다.그렇지 않으면 OnDestroy( ) 이후에도 객체는 계속해서 살아있다. OnDestroy( )함수를 만들어 두고, instance = null; 코드를 넣어둘것 Delegate 저번에도 언급한적 있지만A객체의 delegate에 B객체의 event를 등록한다.B객체를 파괴시키려 할때 A객체에 등록해준 event를 해제(unregister)해 주지 않으면A객체가 파괴되지않는 이상 B객체도 파괴되지 않는다. 따라서 B객체 파괴시 자신의 모든 event가 제대로 등록해 둔 모든 delegate에서 해제되는지를 보장해 주어야 한다...
Asset Bundle Resorce Folder 사용을 자제할것 Resorce Folder는 앱에 같이 묶여 들어가기 때문에 사용 유무에 상관없이 packaging되어 apk의 크기가 커지고그렇게 되면 app이 시작할때 resource file을 read하는 작업도 느려진다.또한 resource folder를 사용할 때 current scene에서 사용되지 않는 object라도 meta data를 전부 memory에 띄우기 때문에 asset이 많을수록기본적인 memory사용량이 계속 증가한다. 하지만 app에서 처음부터 끝까지 반드시 사용될경우 Resorce Folder에 넣어도 무관 Asset : Unity로 게임을 만들때 사용되는 Image, text, audio, animation data등을 의미 Asset Bundl..