Unity 3D 모바일 터치이펙트 만들기
Unity/C# 2021. 12. 8. 11:45Unity 3D 모바일 터치이펙트 만들기

2D게임에서는 터치이펙트를 만드는게 간단하고 참고자료도 많지만 3D게임에 적용할려니 Perspective카메라에선 2D에서 쓰는방식인 Camera.main.ScreenToWorldPoint(Input.mousePosition)로는 안되고 움직이고 회전하는 카메라에대해서는 더더욱 복잡해진다. 찾고찾다가 똑같은 경우를 발견하지 못해서 결국 선택한 방법은 유니티UI에서는 파티클을 쓸수없기 때문에 UI Extensions 패키지를 사용해 UI파티클을 사용할수있게 세팅하고, 터치포지션을 캔버스안에 UI의 Anchored포지션으로 변환해서 캔버스 자식에 둔 터치 이펙트를 UI상에서 움직인후 플레이 시켜줬다. 터치 이펙트용 캔버스는 따로 뒀고 모든씬에 있어야 하기때문에 DonDestroyOnLoad로 등록시켜줬다 그..

Unity/C# 2021. 11. 2. 11:22(C#, Unity) Property(프로퍼티)를 인스펙터에 노출시키기

프로퍼티 변수를 사용하면 인스펙터에 노출이 되지않아 불편할때가 많다. 물론 아예 방법이 없는것은 아니다. public GameObject WrongBallProperty { get { return this.wrongBallProperty; } set { //do whatever } } [SerializeField] private gameObject wrongBallProperty; 이렇게 private변수를 하나 더 만들어서 연결해줘도 되고 인스펙터를 디버그모드로 변환해도 보이긴 보인다. 다만 뭔가 좀더 최소한으로 건드리면서 인스펙터에 노출시키는 방법을 메모한다. 그냥 SerializeField를 프로퍼티에 냅다 써버리면 이렇게 invalid하다고 뜨고 실제로 아무변화도 안생긴다. 하지만 앞에 field..

AssetDatabase.RenameAsset 함수 주의사항
Unity/TroubleShooting 2021. 10. 14. 14:19AssetDatabase.RenameAsset 함수 주의사항

Unity - Scripting API: AssetDatabase.RenameAsset docs.unity3d.comUnity프로젝트내의 에셋의 이름을 런타임중에 바꿀수있는 함수이다.구글시트에서 불러온 데이터를 스크립터블 오브젝트에 입력하고 오브젝트의 이름까지 바꿔주는 자동화 작업에 사용했다. 사용법은 이런식이다. string assetPath = AssetDatabase.GetAssetPath(data.GetInstanceID()); string fileName = "newFileName"; AssetDatabase.RenameAsset(assetPath, fileName); AssetDatabase.S..

Unity/C# 2021. 7. 1. 10:19C# System.Random 사용법

보통 유니티로 개발하다보면 난수생성이 필요할 때 UnityEngine.Random을 사용하게된다. 다만 비동기화 멀티스레딩 코딩중 Task를 쓸때에는 Task안에서 UnityEngine의 API는 거의 다 사용할 수 없다. 에러를 띄워주는것도 아니고 그냥 그 줄에서 스레드가 작업을 마쳐버리니 굉장히 주의해야 할 부분이다. 그래서 Task에서 난수생성이 필요할때 대체재로 쓸쑤있는 System.Random의 사용법을 메모한다. Random 클래스 (System) 의사(pseudo) 난수 생성기를 나타냅니다. 이 알고리즘은 무작위성에 대한 통계적인 특정 요구 사항과 일치하는 숫자 시퀀스를 생성합니다.Represents a pseudo-random number generator, which is an algor..

Unity/C# 2021. 6. 28. 17:49[스크랩]GetInstanceID와 GetHashCode

GetInstanceID 와 GetHashCode 정리할 것. [라면과뽀글이] [오후 4:18] 질문이있어용 [라면과뽀글이] [오후 4:18] GetInstanceID랑 GetHashCode랑은 같은게 맞나요? [라면과뽀글이] [오후 4:24] 자답일지는 모르겠는데 GetInstanceID는 유니티에서 쓰는거같.. daebalstudio.tistory.com 인벤토리의 세이브를 구현할때 아이템의 고유번호를 InstanceID를 섞어서 지정해주려하니 ScriptableObject타입이라 GetInstanceID가 없었다. GetHashCode는 사용할수있었는데 어떤차이인지 설명해주는 게시물 스크랩 결론은 완전히 같다.

Unity/C# 2021. 6. 23. 15:57ScriptableObject에서 OnEnable()

최근 발견한 소소한 팁 ScriptableObject는 컴포넌트가아닌 에셋형태로 사용하기 때문에 예약함수들은 못쓰겠구나라고 알고있었는데 최근 알아보니 OnEnable과 OnDisable을 실행이 된다. OnDisable은 사실 호출 타이밍이 불확실해서 필요하면 더 알아봐야 할것같다. OnEnable은 Start대용으로 쓰면 될것같은데 주의점은 에디터에서 플레이를 누를때만이 아닌 컴파일이 되고난 후에도 에디터상에서 실행이 된다. 따라서 런타임중에 내용이 채워지는 변수들을 참조하면 컴파일 후에 에러가 출력될것으로 예상된다. 빌드에서도 잘되는지는 아직 확인은 안해봤지만 이렇게 쓰는사람이 있는것으로 보아 빌드에서도 잘 될거라고 생각된다.

image