
2D게임에서는 터치이펙트를 만드는게 간단하고 참고자료도 많지만 3D게임에 적용할려니 Perspective카메라에선 2D에서 쓰는방식인 Camera.main.ScreenToWorldPoint(Input.mousePosition)로는 안되고 움직이고 회전하는 카메라에대해서는 더더욱 복잡해진다. 찾고찾다가 똑같은 경우를 발견하지 못해서 결국 선택한 방법은 유니티UI에서는 파티클을 쓸수없기 때문에 UI Extensions 패키지를 사용해 UI파티클을 사용할수있게 세팅하고, 터치포지션을 캔버스안에 UI의 Anchored포지션으로 변환해서 캔버스 자식에 둔 터치 이펙트를 UI상에서 움직인후 플레이 시켜줬다. 터치 이펙트용 캔버스는 따로 뒀고 모든씬에 있어야 하기때문에 DonDestroyOnLoad로 등록시켜줬다 그..
전에 비동기 세이브, 로드 제작기에서 async콜백 안에서는 UnityEngine API속에있는 함수들을 사용하면 async에서 에러없이 팅겨져 나온다고 작성했었다. 비동기 세이브, 로드 제작기 이번에 세이브, 로드 시스템을 구현을했다. 전체를 혼자 구현한건아니고 바이너리화와 암호화는 유니티 에셋스토어의 무료에셋을 사용했다. 설명대로 잘 적용했는데 해보니 막상 아쉬운게 단일스레드였다. 익히 아.. trialdeveloper.tistory.com 그래서 나름 꼼수를 써가며 피해갔었는데 어떻게해도 aysnc안에서 그 타이밍에 호출을 해야할 경우가 생기기 마련이다. 그래서 검색을 좀 해보니 public class MainThreadWorker : MonoBehaviour { // singleton patter..
[C# 문법] C# Enum Count 가져오는 방법 안녕하세요. 오늘은 C# 문법에서 Enum 열거형에 선언되어 있는 총 Count를 가져오는 방법에 대해서 알려 드리려고 합니다. 매우 간단하기 때문에 별 다른 설명 없이 예제 코드를 통해서 어떻게 Enum Count를 가져.. afsdzvcx123.tistory.com 위 블로그에서 참조 요약하자면 count = System.Enum.GetValues(typeof(COLUMNS)).Length; 출처: https://afsdzvcx123.tistory.com/entry/C-문법-C-Enum-Count-가져오는-방법 [BeomBeomJoJo - Programmer]
프로퍼티 변수를 사용하면 인스펙터에 노출이 되지않아 불편할때가 많다. 물론 아예 방법이 없는것은 아니다. public GameObject WrongBallProperty { get { return this.wrongBallProperty; } set { //do whatever } } [SerializeField] private gameObject wrongBallProperty; 이렇게 private변수를 하나 더 만들어서 연결해줘도 되고 인스펙터를 디버그모드로 변환해도 보이긴 보인다. 다만 뭔가 좀더 최소한으로 건드리면서 인스펙터에 노출시키는 방법을 메모한다. 그냥 SerializeField를 프로퍼티에 냅다 써버리면 이렇게 invalid하다고 뜨고 실제로 아무변화도 안생긴다. 하지만 앞에 field..
C# 3.0부터 지원하는 확장메서드(Extension Method)는 특수한 종류의 static 메서드인데, 확장메서드는 마치 다른 클래스(혹은 구조체)의 인스턴스 메서드인 것처럼 사용되는 기능을 제공한다. 확장메서드는 클래스, 구조체, 인터페이스 등에 적용될 수 있다. 일반적으로 인스턴스 메서드를 추가하기 위해서는 해당 클래스 (혹은 타입) 안에 메서드를 추가한다. 하지만, 어떤 경우는 메서드를 클래스 (혹은 타입)에 직접 추가하는 것이 어려울 수도 있는데, 이러한 경우 확장메서드가 유용하게 사용될 수 있다. 확장메서드를 사용하면 클래스를 직접 변경하지 않고도, 클래스 외부에서 (확장)메서드를 정의함으로 해서 마치 그 클래스의 기능을 확장한 인스턴스 메서드를 추가한 것 같은 효과를 낼 수 있다. 여기까..
포스팅에 앞서 이 글은 https://www.csharpstudy.com/ 이 사이트의 예제를 토대로 따라한 기록임을 알립니다. 먼저 WPF앱으로 비쥬얼스튜디오에서 새프로젝트를 만들어준다. WPF앱 프로젝트가 안보인다면 비쥬얼 스튜디오 인스톨러에서 .NET데스크톱개발을 설치해줘야한다. 프로젝트가 열리면 대략 이런화면이 나온다. 열어두면 좋은 사이드 창들은 이 단계에서는 솔루션 탐색기, 도구상자, 속성 창 정도인것 같다. Program클래스에는 주 진입점인 Main()함수가 있다. 이후 Form1.CS[디자인]에 돌아와서 도구상자에서 Button을 끌어다 폼에 놓는다. 그리고 폼을 더블클릭하면 사진과 같은 이벤트함수가 자동으로 생성되고, button1.BackColor = Color.Cyan; button..