분류 전체보기 (45) 썸네일형 리스트형 base.Awake(); 부모 자식 둘 다 awake를 사용하고 싶을 때 자식에 private void Awake() { base.Awake(); } 해주면 부모의 Awake문 먼저 실행시켜준다. 싱글턴 패턴 객체가 하나만 존재하도록 유지시키는 패턴. public class GameManager : MonoBehaviour { public static GameManager instance = null; public int score; public int hp; private void Awake() { if(instance == null) { instance = this; } else { Destroy(gameObject); } } } static으로 했기 떄문에 데이터 영역에 올라와있는 상태. 게임 매니져의 속성같은 느낌임 싱글턴과 일반화를 함께 쓰면 매우 좋다!! 일반화 제네릭은 일반화라고 하며, 공통적으로 사용되는 부분을 추상화한 것을 의미한다. public static T DeepCopy(this T value) where T : class, new() { T clone = new T(); //리플렉션 영역 return clone; } where T : class, new() : T타입이 class이고 new 생성자라는 것을 알려줌 where T : Component : T타입이 Component임. T라는 자격이 가져야 하는 최소 조건. 현재 주석 처리한 리플렉션 영역이 구현되면 T타입으로 웬만한 건 다 확장 메소드로 이용 가능함. 얕은 복사 / 깊은 복사 구조체는 기본적으로 값이 복사되는 깊은 복사 int numA = 10; int numB; numB = numA; numB = 50; Debug.Log(numA); class는 기본적으로 얕은 복사가 일어나 주소를 참조하기 때문에 원본의 값이 변경됨. itemB = itemA 를 했을 경우 itemB에는 itemA의 주소가 들어감. 즉 B의 값을 변경하면 A의 값도 변경됨 이걸 원치 않을 땐 얕은 복사 대신 깊은 복사를 사용해야 함. public Item DeepCopy() { Item temp = new Item(); temp.SetItem(name, price); return temp; } 새로운 Item인 temp를 만들어주고 그걸 리턴 시킴. itemB = itemA.DeepCopy(); 이러면 새.. <T> void PrintValue(T value) { Debug.Log(value); } void Start() { PrintValue((int)3.1415f); PrintValue((float)3.1415f); } 오버로딩 시 간단하게 쓸 수 있음 T Sum(T numA, T numB) { return numA + numB; } 이건 안됨. 현재 T는 미지의 데이터타입이기 때문에 +를 지원할지 어떨지 모르니까 안되는거 확장메소드 public static class ExtensionMethod { public static bool IsBetween(this float value, float min, float max) { if(value>min && value < max) return true; else return false } public static float Calcul(this float value, float numA, float numB) { return (value * numA + value * numB); } } 이렇게 써놓음. 말 그대로 기존 내장 스크립트를 변경하지 않고도 우리가 임의로 정해둔 메소드를 추가하는 역할. this는 어느 클래스의 확장 메서드가 될지 결정하는 역할?이라는 듯. 사용할 땐 if(int.. Singleton Pattern static으로 변수 선언 후 초기화 if( = null)일 시 instance = this else일 시 Destroy(gameObject) foreach / Collection foreach(int temp in 이름) { Debug.Log(이름); } 각 형식에 맞게 순차적으로 데이터 빼줌 List: 순차적으로 빼 Stack: 역순으로 빼 Queue: 순차적으로 빼 - var 형태 알아서 맞춰줌 -> 컴파일 시점에 바꿔줌 - object 모든 데이터 타입의 최상위 형태/개념. -> 런타임에 바꿔줌 foreach(var / object temp in 이름) { Debug.Log(이름); } public void Func(object test) 는 가능하지만 public void Func(var test) 는 불가능하다. 적용 시점이 다르기 때문. object: 모든 타입이 들어갈 수 있지만 값이 할당되면 원본 타입의 특성을 잃어버림. object 형태가 된 상태/박싱된 형태. .. 이전 1 2 3 4 5 6 다음