일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 레이캐스트
- ar
- 병맛게임
- 확장메서드
- Unity
- 로케트
- 델리게이트
- Euler
- 게임제작
- 게임
- 인터페이스
- 리듬게임에디터
- AR세팅
- github
- 소규모프로젝트
- ExtensionMethod
- C#
- 1인개발
- ARProgect
- raycast
- AR게임
- callbyreference
- 게임개발
- AR Foundation
- 유니티
- 짐벌락
- callbyvalue
- 깃허브
- Quaternion
- 리듬게임
- Today
- Total
목록개발 (82)
Ssssong += Dev
델리게이트는 정해진 기능을 대신 할 수 있는 대리자이다. delegate 리턴타입 델리게이트명(매개변수) 형식으로 규격을 정해줄 수 있다. //델리게이트 선언 public delegate void PrintInfoDel(); //델리게이트 형식을 매개 변수로 받아오기 void PrintInfo(PrintInfoDel printInfoDel) { Debug.Log("---------------"); target.ShowInfo(); Debug.Log("---------------"); } void Start() { Player player = new Player(); //델리게이트 적용 PrintInfo(player.ShowInfo); } 델리게이트는 비슷한 형식의 함수가 일부분의 기능만 다르게 동작할 때..
https://www.youtube.com/watch?v=CcSG_BKB7WM 지난 4월 제작했던 뮤직비디오 겸 리듬게임이다. velog에는 올렸었는데 블로그를 티스토리로 바꾸면서 이 작업을 올리지 않았기에 따로 업로드한다. 유니티로 만드는 뮤직비디오가 목표였기에 그다지 게임으로서 확장성이 있지는 않지만 이 작업을 좀 더 발전시키려 현재 장기프로젝트에 리듬게임 제작 프로젝트를 진행하고 있다.
AR 프로젝트로 Throw Ball! 게임을 제작하였다. 지난주 게시글 업로드 해야 했는데 이사하느라 포스팅이 늦게 되었다 ㅠㅠ 개발일지 기록해둔 것들도 차차 올려야겠다. 에디터에서 본 화면은 아래와 같다. AR 카메라를 사용하기 때문에 휴대폰에서의 동작과 에디터에서의 동작이 달라 여러 번 빌드해서 확인해보아야 했다. 실제 핸드폰으로 플레이하면 이렇게 카메라로 인식하여 플레이할 수 있다. 아래는 플레이 영상!
확장메소드에 이어서 확장메소드를 제네릭하여 사용할 수 있다. 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..
확장 메서드란? - 기존에 제공되는 클래스 또는 외부 라이브러리에 속해 있는 클래스에 새로운 기능을 "상속"이 아닌 메서드를 이용해서 기능을 확장하는 것을 의미한다. 확장 메서드의 특징 - C# 언어의 확장 메서드는 정적 클래스만을 통해서 정의하는 것이 가능하다. 즉, 정적 클래스가 아니면 확장 메서드 자체를 구현하는 것이 불가능하다. - C# 언어의 확장 메서드를 정의하는 정적 클래스는 반드시 최상단 영역에 위치시켜야 한다. - 특정 클래스의 중첩 클래스(클래스 안에 클래스를 선언한 형태)로는 확장 메서드를 정의하는 것이 불가능 구조체, 클래스에 기본으로 내장되어 있는 여러 메서드들 이외에 원하는 메서드를 추가하여 사용할 수 있다. public static class ExtensionMethod { /..
게시글 따로 저장하기 애매한 짤팁들은 이 게시글에 조금씩 추가 예정... 충돌 검사 시 tag 대신 GetComponent 검사 해 주면 좋다. 여러 종류의 태그를 주르륵 추가하는 것 보다 other.GetComponent() != null 로 검사하면 해당 클래스 가지고 있는 요소들 한꺼번에 검사하기 좋다. 아래는 AR 공던지기 충돌 검사 코드 private void OnTriggerEnter(Collider other) { if(other.GetComponent() != null) { sheepBottle.inTrigger = true; sheepBottle.rigidbody.isKinematic = false; } }
반복문으로 콜렉션 요소를 가져올 때 foreach를 쓰면 동일한 형식으로 가져올 수 있다. 이렇게 가져올 때 각 콜렉션이 가져오는 순서에 맞춰 요소를 int형으로 가져온다. foreach(int temp in List) { Debug.Log(temp); } foreach(int temp in Stack) { Debug.Log(temp); } foreach(int temp in Queue) { Debug.Log(temp); } 타입이 지정되지 않은 콜렉션의 경우 object나 var를 사용할 수 있다. obejct는 모든 데이터의 부모로써 Int, GameObject 같은 여러 데이터 타입들의 부모라 할 수 있다. object 형식은 박싱 기능을 제공하여 object 형으로 형변환되어 저장되었다가 이후 언..
https://docs.microsoft.com/ko-kr/dotnet/api/system.collections.generic.list-1.convertall?view=net-6.0 List.ConvertAll(Converter) 메서드 (System.Collections.Generic) 현재 List의 요소를 다른 형식으로 변환하고 변환된 요소를 포함하는 목록을 반환합니다. docs.microsoft.com List의 각 요소를 한꺼번에 다른 형식으로 변환하여 복사할 수 있다. 같은 형식으로도 복사가 가능하므로 .ConvertAll(s=>s) 이렇게 깊은 복사를 하는 데 사용할 수 있다. 아래는 AR공던지기의 골대, 공 습득 조건 충족 여부를 검사하는 레시피이다. 조건으로 들어가 있는 리스트를 복제하여..