본문 바로가기
728x90
반응형

c#31

Array와 List 그리고 IList List Vs Array- List 내부를 보면 Array를 사용한다. 즉 List는 Array를 한번 감 싼 구조라고 생각하면 편하다. 둘의 가장 큰 차이는 Capacity에 유연성- 데이터 사이즈가 가변적인 경우 List를 고정적인 경우 Array를 사용하기 때문-  Array는 연속적인 메모리 위치에 동일한 데이터 유형의 요소를 저정하고, List는 연속적인 메모리 위치에 저장되지 않는다. 성능 차이그러다 보니 List는 삽입 삭제 과정에서 Array보다 느리다. 왜냐면 사이즈가 변하면서 메모리를 재할당 하니깐. IList?IList는 배열과 ArrayList의 기반 인터페이스다. 그치만 Non-Generic이다.그러다보니 컬렉션에 추가된 모든 요소가 Object로 변환되고 이걸 다시 쓰려면 타입을.. 2024. 7. 20.
fake null 관련한 이야기 이 이야기에 앞서 c++를 조금 하셨던 분들이라면 댕글링 포인터에 대해 들어봤을 겁니다.댕글링 포인터란 포인터가 해제된 메모리 영역을 가키고 있는걸 의미합니다. 그렇다면 unity에서 fake null은 뭐냐? 말 그대로 실제로는 null인데 unity에서 null이 아니에요. 라고 하고 있는 상황입니다.Unity에서 모든 GameObject들은 UnityEngine.Object를 상속 받습니다. UnityEngine.Object란 엔진 내부는 c++이기에 c++ 객체인 native object객체애 대한 포인터를 지니고 있는 한번 감싸진 (저는 이걸 wrapper class라고 부름) 클래스입니다. (아래 이미지로 생각하면 됩니다.)문제는 Destory(gameObject)를 하면 이게 사진에 보이는 .. 2024. 6. 14.
Unity IL2CPP, JIT, AOT "최근에 동료가 Mono.JIT 사용이 90% 이상인데 이거 잘못된거 아니에요?" 라는 질문을 받고 대답해주면서 내 스스로 돌아볼겸 글을 남깁니다.* 정말 간단하게 적어놨으니 중간 중간 더 자세히 알고싶은 용어는 직접 찾아보면서 공부하고 댓글로 저한테도 공유하면서본인걸로 만들어 갑시다!   먼저 간단하게 JIT이 뭔지 AOT가 뭔지 적어보면 다음과 같다. 더 자세한건 조금만 검색해도 나온다.Just In Time (JIT)Ahead Of Time (AOT)필요할 때 그때 그때 컴파일미리 컴파일 Unity 엔진 내부는 C++로 짜여있다. 그러나 프로그래머는 C#으로 기능을 구현한다.어쨋든 우리는 C#으로 코드를 작성하고 하나의 프로그램을 만드는데 이 과정에서 컴파일과 빌드는 필수다.컴파일, 빌드가 뭔지 정.. 2024. 5. 5.
[C#]상속: Virtual, Abstract, Interface C#에서 상속시 자주 등장하는 키워드 virtual(가상), Abstract(추상), Interface(인터페이스)에 대해 정리하려고 한다. Virtual (가상) 키워드 - 자식 클래스에서 override 할 수 있으나 원하면 재정의 해야한다. - virtual class는 완벽한 기능을 제공할 수 있다. - 가상 클래스는 인스턴스화 할 수 있다. Abstract (추상) 키워드 - 불완전한 키워드로 자식 클래스에서 반드시 재정의 해야한다. - 사용 목적은 여러 자식 클래스에서 공유할 기본적인 클래스의 공통적인 정의를 제공하는 것이다. - 추상 클래스는 인스턴스화 할 수 없다. Interface (인터페이스) 키워드 - abstract와 비슷하나 멤버 필드를 사용할 수 없다. 그러나 함수와 프로퍼티는 .. 2023. 11. 20.
코루틴(Coroutine) 오늘은 간만에 유니티를 공부하면서 스스로 질문을 많이 해봤다. 이 중 제대로 대답하지 못했던 기초들을 정리하려고 한다. 그 중 첫 이야기는 코루틴이다. 사실 매우 자주 사용하고 이젠 익숙해졌지만 이게 뭔지 매.우.정.확.하.게 대답하지 못했다. C#에서의 코루틴 - 비동기 코드를 구현하기 위한 방법 중 하나다. 일반적으로 메서드처럼 보이지만 '중간에 일시 중지되어 다른 코루틴을 실행하고 나중에 중단한 지점부터 계속 실행된다' => 일시정지 가능한 비동기 방법 Unity에서 코루틴 (항상 RTFM을 해보자 코루틴 - Unity 매뉴얼 (unity3d.com)) - 비동기 작업을 처리하면서도 게임 루프의 제어를 유지할 수 있기 때문이다. -> 동시성 프로그래밍이 가능해진다. 코루틴의 동작 깊게 알기 - 코루.. 2023. 11. 20.
월드 공간과 UI 공간 게임 오브젝트들이 움직이는 월드 공간과 UI들이 위치한 UI 공간은 다르다. 월드 공간은 기획에 따라 크기가 다를 것이고 UI 공간의 경우 화면 해상도에 따라 다르다. 예를들어 월드 공간의 넓이가 800, 높이가 400이고 UI 공간의 넓이가 200, 높이가 400인 경우 월드 공간의 A 오브젝트가 좌표 (400, 200)에 있는걸 UI 공간의 표시하면 넓이가 벗어날 것이다. 따라서 이를 해결하기 위해선 정규화가 필요하다. 이를 해결하기 위해선 다음 두 가지 공식을 순서대로 진행한다. 1. 월드 공간 A의 좌표의 값에 각각 월드 공간의 넓이와 높이로 나눈다. => (400, 200) => (400 / 월드 공간 넓이, 200 / 월드 공간 높이) = (400 / 800, 200 / 400) = (0.5,.. 2023. 10. 17.
728x90
반응형