Unity & C#/Scripting 6

[Effective C#] 1장. C# 언어 요소(아이템 1~5)

아이템 1: 지역변수를 선언할 때는 var를 사용하는 것이 낫다. 지역변수의 타입을 암시적으로 선언하는 것이 좋은 이유는 C# 언어가 익명 타입을 지원하기 위해서 타입을 암시적으로 선언할 수 있는 손쉬운 방법을 제공하기 때문이다. 정확한 반환 타입을 알지 못한 채 올바르지 않은 타입을 명시적으로 지정하면 득보다 실이 많다. IQueryable 컬렉션을 IEnumerable로 강제 형변환하게 되면 IQueryProvider가 제공하는 장점을 모두 잃게 된다. var를 사용하면 개발자 입장에서는 변수의 타입과 같이 지엽적인 부분보다 변수의 의미 파악에 더 집중할 수 있다. 컴파일러 관점에서 살펴본다면 개발자가 특정 객체의 타입을 명시적으로 지정하지 않더라도 객체 생성에 문제가 있을 경우 오류를 보고할 수 있..

(해석)ScriptableObject로 게임을 설계하는 3가지 방법

다음은 'Three ways to architect your game with ScriptableObjects' 포스팅을 해석하고 풀이한 글입니다. unity.com/how-to/architect-game-code-scriptable-objects?_ga=2.171725536.1554841006.1604417126-1616682105.1604129636 | Keep your code flexible, manageable, and easy to debug by architecting with ScriptableObjects. unity.com ScriptableObjects란 무엇인가?ScriptableObject는 serialize 가능한 Unity class로, script 인스턴스로부터 독립적인 공유..

Data based structure - ScriptableObject

ScriptableObject ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject의 주요 사용 사례는 값의 사본이 생성되는 것을 방지하여 프로젝트의 메모리 사용을 줄이는 것입니다. 이는 첨부된 MonoBehaviour 스크립트에 변경되지 않는 데이터를 저장하는 프리팹이 있는 프로젝트의 경우 유용합니다. 이러한 프리팹을 인스턴스화할 때마다 프리팹에 이 데이터의 자체 사본이 생성되는데, 이와 같은 방법을 사용하여 중복 데이터를 저장하는 대신 ScriptableObject를 이용하여 데이터를 저장한 다음 모든 프리팹의 레퍼런스를 통해 액세스할 수 있습니다. 즉, 메모리에 데이터 사본을 하나만 저장합니다. ..

C# Extension Method(확장 메서드)

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/extension-methods 확장 메서드 - C# 프로그래밍 가이드 C#에서 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 추가할 수 있습니다. docs.microsoft.com 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 "추가"할 수 있습니다. 확장 메서드는 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출됩니다. 확장 메서드를 사용하면 상속을 받거나 원래 클래스를 복잡하게 수정하는 것 없이 간..

Delegate, Event (2) - UnityEvent

UnityEvent UnityEvent는 C# Delegate를 Unity에서 쓰기 좋게 랩핑해 놓은 기능이다. MonoBehaviour를 상속받는 모든 클래스에서 사용할 수 있고, UnityEvent 변수를 선언하면 인스펙터에 표시되고 영구적 콜백을 추가할 수 있다. - 영구적 콜백은 인스펙터에서 등록해준 콜백으로, 런타임에서는 수정(등록/제거)할 수 없다. 선언 # UnityEventTest.cs using UnityEngine; using UnityEngine.Events;// UnityEvent 사용을 위해 import public class UnityEventTest : MonoBehaviour { public UnityEvent unityEvent; } 등록/삭제 스크립트 상에서도 UnityE..

Delegate, Event (1) - C# Delegate

대리자 Delegate Microsoft Docs - 대리자 사용(C# 프로그래밍 가이드) 대리자는 C 및 C++의 함수 포인터처럼 메서드를 안전하게 캡슐화하는 형식입니다. 함수 포인터와는 달리 대리자는 개체 지향적이고 형식이 안전하며 보안이 유지됩니다. 대리자에 대한 호출은 대리자를 통해 해당 메서드로 전달된다. 매개변수가 있을 경우 호출자의 매개변수는 대리자에 의해 해당 메서드로 전달되고, 반대로 반환값이 있을 경우 대리자에서 호출자로 반환된다. # DelegateTest.cs string 매개변수를 받는 delegate를 선언하고, 동일하게 string 매개변수를 받는 메서드를 delegate 객체에 넣어줬다. public class DelegateTest : MonoBehaviour { priva..