일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 깃허브
- 레이캐스트
- Euler
- 소규모프로젝트
- Unity
- 로케트
- 인터페이스
- 리듬게임에디터
- 게임개발
- 유니티
- C#
- callbyvalue
- github
- ar
- 병맛게임
- 짐벌락
- Quaternion
- 확장메서드
- raycast
- ARProgect
- ExtensionMethod
- 게임제작
- AR게임
- AR Foundation
- callbyreference
- 델리게이트
- 게임
- AR세팅
- 리듬게임
- 1인개발
- Today
- Total
목록개발 (82)
Ssssong += Dev
foreach : 어떤 형태든 정해진 순서대로 처리 IEnumeratable : 정해진 순서대로 반복 가능 IEnumerator : 정해진 순서대로 반복하는 도구 IEumerator에서 정해진 순서를 IEnumeratable에서 반복시키고, 그것을 foreach로 가져온다면 자동으로 지정한 순서대로 반복시켜준다. IEnumerable은 이렇게 선언되어 있어 IEnumerator를 무조건 가지고 있다. public interface IEnumerable { IEnumerator GetEnumerator(); } IEumerator의 기본 형태는 이렇다. public interface IEnumerator { object Current { get; } bool MoveNext(); void Reset(); ..
타입의 결정을 런타임 시점으로 미뤄둘 수 있는 패턴이다. 컴파일 시점에서 위에 더 생길 클래스를 알지 못할 때 사용한다. 타입에 대한 정보를 가져와서 이후 처리한다. 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에 원하는 스크립트를 추가하여 실행 순서를 지정할 수 있다. 숫자가 작을 수록 실행 순서가 빠르다.
ThrowBall! 만드느라 잠시 넣어놨던 리듬게임 다시 꺼내서 뚝딱거리고 있다. 에디터에서 찍은 노트를 세이브/로드 할 수 있는 기능을 추가하였다. 에디터에서 노트를 저장하면 플레이 화면에서도 노트 정보를 가져올 수 있다. Json 파일에 노트 정보를 저장하고 있다. 이런 식으로 음악 이름, 저장 시간, 난이도, 라인간격, bpm, 그리고 각 라인에 찍혀 나올 정보가 기록된다. { "musicName": "Scherzo Waltz", "dataTime": "20220617135058", "difficulty": "Normal", "lineGap": 50.0, "bpm": 240, "leftDial": [ "4;startLine", "13;endLine" ], "leftNormal": [ "6" ], "..