반응형

전체 글 305

[Unity] DOTween

: 오브젝트의 애니메이션, 값을 변경할 때 쉽고 다양한 모션을 줄 수 있는 간편한 API입니다. DOTween은 특정 변수의 값들을 일정 시간동안 원하는 값으로 부드럽게 변화시켜주는 역할을 합니다. * 공식 문서 링크 : http://dotween.demigiant.com/documentation.php DOTween - Documentation Nomenclature Tweener A tween that takes control of a value and animates it. Sequence A special tween that, instead of taking control of a value, takes control of other tweens and animates them as a group..

[Unity]/[Unity] 2022.10.10

[C#] 제네릭(Generic)

: 타입을 미리 정하지 않고, 선언할 때 타입을 지정. T로 주로 표기함. (ex) List : ArrayList와 달리 선언할 때 타입을 정함 → 다른 타입의 객체를 삽입하려하면 컴파일 오류 발생. 제네릭이 될 수 없는 것 : 필드, 속성, 인덱서, 생성자, 이벤트, 종료자 타입 parameter(매개변수)와 타입 argument(인수) public class List -> T : 타입 매개변수 List list = new List(); -> string이 타입 인수 제네릭 타입의 초기화 상태 : 개별적으로 초기화, 정적 필드를 독립적으로 가짐. public class GeneCounter { private static int value; public static void Increment() { va..

[Unity]/[C#] 2022.10.07

[C#] readonly 한정자 (feat.const 한정자)

: 변수를 상수로 만들어주며, (런타임 시에)값을 변경하거나 수정할 수 없습니다. * 기본적으로 static * 반드시 값이 초기화되어야 함. : 변수를 읽기 전용으로 만들어주며, 선언 시 또는 클래스 생성자에서 초기화 후에 수정할 수 없습니다. * 선언할 때 값을 초기화하는 것이 필수가 아님. * 생성자 외부에서 값을 수정할 수 없음. class ReadOnlyExample { public readonly int num = 5; public ReadOnlyExample() { num = 33; } public ReadOnlyExample(bool isTrue) { num = 500; } } ReadOnlyExample ex1 = new ReadOnlyExample(); ReadOnlyExample ex..

[Unity]/[C#] 2022.10.06

[C#] reflection

: 프로그램 실행 도중 객체의 정보를 조사하거나, 다른 모듈에 선언된 인스턴스를 생성하거나, 기존 개체에서 형식을 가져오고 해당하는 메서드를 호출, 또는 해당 필드와 속성에 접근할 수 있는 기능을 제공합니다. Type.GetConstructors() : 모든 public 생성자 가져옴 -> 괄호 안에 매개변수 타입이 찍힘 Type.GetMethods() : 해당 형식의 메서드 목록을 가져옴 Type.GetFields() : 해당 형식의 필드 목록을 가져옴 * 사용 예시 using System.Reflection; class Animal { public int age; public string name; public Animal(string name, int age) { this.name = name; t..

[Unity]/[C#] 2022.10.05

[C#] partial 클래스

: 클래스, 구조체, 인터페이스, 메서드의 정의를 둘 이상의 소스파일에 분할하는 것으로, 컴파일할 때 다시 결합합니다. * 사용 타이밍 대규모 프로젝트에서 여러 프로그래머가 동시에 한 클래스에 대해 작업할 경우 자동으로 생성된 소스로 작업하는 경우 → 소스 파일을 다시 만들지 않고도 클래스에 코드 추가 * 주의 사항 - 대리자, 열거형 선언에서는 partial 한정자를 사용할 수 없음. * 사용 방법 간단한 예시 public partial class Employee { public void DoWork() { Console.WriteLine("work"); } } public partial class Employee { public void DoSleep() { Console.WriteLine("slee..

[Unity]/[C#] 2022.10.04

[Unity] Scriptable Object

: 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너 입니다. 값의 사본이 생기는 것을 방지하여 프로젝트의 메모리 사용량을 줄입니다. 변경되지 않는 데이터를 저장하는 MonoBehavior 스크립트와 연결된 프리팹이 있는 프로젝트의 경우 유용한데, 데이터를 일반 변수로 구현할 경우 인스턴스화 할 때마다 프리팹에 이 데이터에 대한 자체 사본이 생성됩니다. Scriptable Object를 사용하면 메모리에 Scriptable Object의 데이터 사본만을 저장하여 이를 참조하는 방식으로 작동합니다. 유니티 오브젝트에서 파생되지만 게임 오브젝트에 컴포넌트로 부착할 수 없고, 프로젝트에 에셋으로 저장됩니다. 에디터 사용 시, Scriptable Object에 데이터를 저장..

[Unity]/[Unity] 2022.10.03

[C#] 일반화 프로그래밍

* 일반화 대상 = 데이터 형식. * 형식 매개 변수 T는 모든 데이터 형식을 대신할 수 있습니다. * ArrayList, Queue, Stack, Hashtable 컬렉션들은 모두 object 형식을 기반으로 하기 때문에 태생적으로 성능 문제를 안고 있는데, 일반화 컬렉션은 컴파일시 컬렉션에서 사용할 형식이 결정되고, 쓸데없는 형식 변환을 일으키지 않아 성능 저하가 해결됩니다. 대표적인 일반화 컬렉션은 List, Queue, Stack, Dictionary가 있습니다. List = ArrayList의 일반화 버전, Dictionary = Hashtable의 일반화 버전입니다. * 타입 일반화 메서드 예시 static void CopyData(T[] source, T[] target) { target =..

[Unity]/[C#] 2022.09.30

[C#] 확장 메서드 기법

: 기존의 클래스에 손대지 않고 메서드를 추가하는 방법입니다. * 확장 메서드 사용 조건 확장 메서드를 정의할 클래스를 static으로 선언. 정의한 클래스 내부에 확장하고 싶은 메서드를 static으로 선언. 첫번째 파라미터로 메서드가 포함되어질 클래스를 this 포인터와 함께 적어줌. * 확장 메서드 사용 예시 public static class LongExtensions { public static string ToPrice(this long value) { return value.ToString("N0"); } } long a = 13343454323243; string price = a.ToPrice(); Console.WriteLine((price)); //13,343,454,323,243 출력

[Unity]/[C#] 2022.09.29

[C#] 메서드 매개 변수 : params, in, ref, out

* params : 가변 개수의 인수. * in : 매개 변수를 참조로 전달할 수 있지만, 호출된 메서드로만 읽을 수 있습니다. static void InArgExample(in int number) { number = 19; //오류 출력 -> 수정 불가능. } * ref : 인수가 값이 아닌 참조로 전달됨을 의미합니다. void Method(ref int refArgument) { refArgument = refArgument + 44; } int number = 1; Method(ref number); Console.WriteLine(number); //45 출력 -> 값타입인 int도 참조로 전달 * out : 매개 변수가 참조로 전달되고, 호출된 메서드에 의해 새로 기록되도록 해줍니다. 메서드가..

[Unity]/[C#] 2022.09.28
반응형