일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- raycast
- 레이캐스트
- C#
- 1인개발
- AR세팅
- 리듬게임에디터
- 인터페이스
- AR게임
- 병맛게임
- 유니티
- Unity
- ExtensionMethod
- 짐벌락
- callbyreference
- Quaternion
- 델리게이트
- Euler
- 확장메서드
- 로케트
- 깃허브
- AR Foundation
- 소규모프로젝트
- 게임
- 게임개발
- callbyvalue
- ARProgect
- 리듬게임
- ar
- 게임제작
- github
- Today
- Total
목록개발/공부 (48)
Ssssong += Dev
타입의 결정을 런타임 시점으로 미뤄둘 수 있는 패턴이다. 컴파일 시점에서 위에 더 생길 클래스를 알지 못할 때 사용한다. 타입에 대한 정보를 가져와서 이후 처리한다. GetType()은 단순히 데이터타입만을 의미하는 것이 아니라 해당 데이터타입이 가지고 있는 정보를 의미한다. Temp temp로 생성된 객체를 temp.GetType() 으로 정보를 가져온다면 Temp가 가진 멤버도 가져올 수 있다. FieldInfo[] fields = type.GetFields()로 해당 데이터타입이 가진 멤버 변수들을 가져올 수 있다. BindingFlag를 사용하면 가져오는 멤버 변수의 성격 또한 지정할 수 있다. Type type = slime.GetType(); type.GetField("hp").GetValue..
[옵저버 패턴] 유니티, C#의 델리게이트 기능과 같다. 한 객체의 상태가 바뀌면 그 객체에 의존하는(해당 객체를 구독하는) 다른 객체들은 자동 갱신된다. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=cdw0424&logNo=221479970701 C# - Delegate,Action,func 디자인 패턴에서 말하는 옵저버 패턴을 C#에선 델리게이트로 구현 할 수있다. C나 C++에서는 포인터로 ... blog.naver.com [템플릿 메서드] 어떤 작업을 처리하는 일부분을 캡슐화해 특정 단계의 기능을 바꾸는 패턴 평소에 자주 쓰고 있던 패턴이다. public class Monster : MonoBehaviour { publi..
namespace System { public delegate void EventHandler (object sender, EventArgs e); } 이벤트핸들러는 이런 식으로 선언되어 있다. 기본적으로 이벤트핸들러 또한 델리게이트이다. object로 매개변수를 전달하기 때문에 언박싱해서 사용하게 된다. public class Monster : MonoBehaviour { public EventHandler onDieHandler; } public class Player : MonoBehaviour { public void FuncTwo(object sender, EventArgs args) { atk += ((Monster)sender).atk; //몬스터의 공격력을 가져와서 내 공격력에 흡수시키고 ..
public class Teacher : MonoBehaviour { public string teacherName; public string subject; public ILessonStrategy lessonStrategy; public void SetInfo(ILessonStrategy strategy, string name, string subject) { this.lessonStrategy = strategy; this.teacherName = name; this.subject = subject; } public virtual void Study() { Debug.Log(lessonStrategy.Lesson() + subject + "수업"); } } //전략을 추가 public interfa..
람다 : 무명메서드 () => { } 이렇게 한줄로 처리되는 무명메서드를 람다식이라고 한다. void TestFunc(Func del) { del(50,80); } private void Start() { TestFunc((x,y) => { return (x + y); }); } 괄호 안에서 여러 줄을 처리하는 무명메서드를 람다문이라고 한다. TestFunc((x,y) = >{ Debug.Log("람다문 테스트"); return (x + y); }) 체인을 풀어주는 경우에는 람다식을 쓸 수 없다. 람다식은 무명이기 때문!
유니티는 게임이 실행되었을 때 Awake -> OnEnable -> Start 순으로 함수를 실행한다. 그런데 여러 스크립트에서 Awake, Start 등을 쓰고 있을 때 이 함수끼리의 실행 순서를 정해주고 싶을 때가 있다. 이 때는 ProjectSetting에서 실행 순서를 변경해 주면 된다. Script Execution Oder에서 Defualt Time에 원하는 스크립트를 추가하여 실행 순서를 지정할 수 있다. 숫자가 작을 수록 실행 순서가 빠르다.
델리게이트는 정해진 기능을 대신 할 수 있는 대리자이다. delegate 리턴타입 델리게이트명(매개변수) 형식으로 규격을 정해줄 수 있다. //델리게이트 선언 public delegate void PrintInfoDel(); //델리게이트 형식을 매개 변수로 받아오기 void PrintInfo(PrintInfoDel printInfoDel) { Debug.Log("---------------"); target.ShowInfo(); Debug.Log("---------------"); } void Start() { Player player = new Player(); //델리게이트 적용 PrintInfo(player.ShowInfo); } 델리게이트는 비슷한 형식의 함수가 일부분의 기능만 다르게 동작할 때..
확장메소드에 이어서 확장메소드를 제네릭하여 사용할 수 있다. where T 로 T 범위를 지정해야 한다. 그렇지 않으면 T의 성격이 모호하여 사용할 수 없기 때문이다. public static T DeepCopy(this T value) where T : class, new() { T clone = new T(); return clone; } public static void Test(this T value) where T : Component { Debug.Log("TEST"); } 싱글턴 패턴도 제네릭할 수 있다. public class Singleton : MonoBehaviour where T : Singleton { public static T instance = null; private voi..