Unity/C# 2021. 10. 25. 20:46C# 확장메소드, List 셔플

C# 3.0부터 지원하는 확장메서드(Extension Method)는 특수한 종류의 static 메서드인데, 확장메서드는 마치 다른 클래스(혹은 구조체)의 인스턴스 메서드인 것처럼 사용되는 기능을 제공한다. 확장메서드는 클래스, 구조체, 인터페이스 등에 적용될 수 있다. 일반적으로 인스턴스 메서드를 추가하기 위해서는 해당 클래스 (혹은 타입) 안에 메서드를 추가한다. 하지만, 어떤 경우는 메서드를 클래스 (혹은 타입)에 직접 추가하는 것이 어려울 수도 있는데, 이러한 경우 확장메서드가 유용하게 사용될 수 있다. 확장메서드를 사용하면 클래스를 직접 변경하지 않고도, 클래스 외부에서 (확장)메서드를 정의함으로 해서 마치 그 클래스의 기능을 확장한 인스턴스 메서드를 추가한 것 같은 효과를 낼 수 있다. 여기까..

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. 8. 5. 11:22WindowsForm#1-Button 컨트롤

포스팅에 앞서 이 글은 https://www.csharpstudy.com/ 이 사이트의 예제를 토대로 따라한 기록임을 알립니다. 먼저 WPF앱으로 비쥬얼스튜디오에서 새프로젝트를 만들어준다. WPF앱 프로젝트가 안보인다면 비쥬얼 스튜디오 인스톨러에서 .NET데스크톱개발을 설치해줘야한다. 프로젝트가 열리면 대략 이런화면이 나온다. 열어두면 좋은 사이드 창들은 이 단계에서는 솔루션 탐색기, 도구상자, 속성 창 정도인것 같다. Program클래스에는 주 진입점인 Main()함수가 있다. 이후 Form1.CS[디자인]에 돌아와서 도구상자에서 Button을 끌어다 폼에 놓는다. 그리고 폼을 더블클릭하면 사진과 같은 이벤트함수가 자동으로 생성되고, button1.BackColor = Color.Cyan; button..

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