전체 개발판 48

[C#] for loop에서 Lambda 사용 시 iteration variable 사용 주의

C#이나 Javascript 두 언어 다 개인적으로 Lambda 식을 많이 사용하는데요. 최근 for loop 안에서 lambda 식을 사용 했을 때 예상치 못한 결과가 계속 나와서 충격을 받았던 경험이 있었습니다. 그 경험을 공유하려고 합니다. 예시 상황은, Button들이 array에 담겨져 있고 for loop를 돌면서 이벤트를 등록했습니다. using UnityEngine; using UnityEngine.UI; namespace LambdaInForLoop { public class ButtonManager : MonoBehaviour { [SerializeField] private Button[] buttons; void Start() { for (int i = 0; i < buttons.Le..

Unity & C# 2021.12.11

[유니티] Unity Remote 5 활용하여 모바일 개발하기

잠시 본가인 대구에 와있으면서 VR 장비가 없어 VR 개발은 잠시 쉬고 오랜만에 모바일 개발을 해볼까라는 생각이 들었습니다. 유니티로 모바일 개발할 때 테스팅 하기 너어어어무 편하게 해주는 Unity Remote 5라는 앱을 소개시켜드리고, 사용하는 방법을 나누고자 합니다. 먼저 다음 링크로 가셔서 핸드폰에 Unity Remote 5를 설치해줍니다 링크: https://play.google.com/store/apps/details?id=com.unity3d.mobileremote&hl=en&gl=US Unity Remote 5 - Apps on Google Play Unity Remote 5 on your Android device to test your game live in the Unity Edit..

Unity & C# 2021.12.02

[C# 문법] Reference Type 과 Value Type의 차이점

혹시 Reference Type과 Value Type에 대해서 들어보셨나요? 저도 막연하게 이론적으로만 알고 있다가 개발을 하면서 "아 이래서 Reference Type 이고 이래서 Value Type 이군아!' 라고 확 와닿은 이후로 좀 더 잘 이해하게 되었습니다. 번역 그대로 하면 Reference Type은 참조 타입이고 Value Type은 값 타입이라는 건데, 그렇다면 차이점은 뭘까요? Class 와 Struct의 차이점들 중에 하나가 바로 Class는 Reference Type 이고 Struct은 Value Type 입니다. 함수에 파라미터로 각각의 타입을 넘기는 상황을 보면 보다 쉽게 이해 할 수 있습니다. using UnityEngine; public class ReferenceExampl..

Unity & C# 2021.11.14

react-router-dom에서 Switch를 import할 수 없다고 에러가 뜰때

React로 개인 포트폴리오 사이트를 만드려고 합니다. 그런데 개발하는 도중, 계속 에러 메세지가 떠서 무슨 일이지 하고 보니, 메세지 내용이 Switch를 react-router-dom 패키지에서 import 할 수 없다 이런 내용있던 것 같습니다. 뭐지? 오타를 냈나하고 한참을 들여다봐도 오타를 찾지 못하다가 인터넷을 검색해서 발견할 수 있었습니다. 참조 링크: https://stackoverflow.com/questions/63124161/attempted-import-error-switch-is-not-exported-from-react-router-dom Attempted import error: 'Switch' is not exported from 'react-router-dom' I don'..

REACT 2021.11.13

[유니티 C#] Json 저장 & 불러오기 너무 쉽게 구현하기

처음 유니티를 배우기 시작했을때 저장을 구현해야하는 순간이 찾아오면 어떻게 구현해야하는지 찾아보지도 않은채, 그저 '너무 어려울꺼같다' '지금 실력으로는 구현하기 힘들겠지?' 라고 무턱 겁부터 먹었던 기억이 있습니다. 그런데 지금 와서 생각해보면 왜 그렇게 겁을 냈을까? 라고 생각이 들고 왜 구현하려고 시도조차 하려고 하지 않았을까 후회가 되는 거같네요. 알고 보면 별거 아니고, 정말 쉽게 구현할 수 있는데 말이죠. 저장을 할 때 저장파일 포맷으로 여러가지가 있는데 오늘은 Json 파일로 저장하는 방법에 대해서 알아보도록 하겠습니다. Json 형태로 저장하는게 어렵지는 않을까? 생각할 수도있는데 전혀 그렇지 않습니다. 너무 쉬워서 예전에 겁먹었던 것이 허무할 정도이죠... JsonUtility이라고 하는..

Unity & C# 2021.11.12

오징어게임 얼굴 테스트

저번 견상테스트에 이어서 비슷한 컨셉으로 요즘 핫한 오징어게임 얼굴 테스트를 만들어보았습니다. 견상테스트의 코드를 똑같이 복사붙여넣기하면 공부가 될거같지가 않아서 나름 처음부터 다시 코드를 작성했는데 결국 작성한 코드를 보니 견상테스트 때 작성한 코드와 거의 동일하게 되더군요... 역시 스타일은 잘 바뀌지 않나봅니다. 이름은 Squid Game Face Test로 요즘 오징어게임이 해외에서도 많이 핫해서 영어로 만들어보았습니다. 오징어게임 드라마 내 캐릭터 12명을 선발해서 python으로 작성한 web crawling 코드로 각각 50개의 사진을 가져와서 쓸만한 사진들을 선별하고 google teachable machine을 사용해서 machine learning을 시킨 데이터를 가져와 내가 찍을 사진..

REACT 2021.10.21

Netlify로 Github Repository Web 배포하기

개발자로서 개발을 하는 주된 이유 중 하나는 내가 개발한 서비스들이 다른 사람들에게 사용되는 것인데요. 그러기 위해선 다른 사람들이 사용 할 수있게 배포!를 해주어야합니다! 아주 배포가 커야하죠...하하하 웹개발을 시작한지 얼마 안된 저는 쉽게 배포하는 방법을 찾아보다가 Netlify라고 하는 대신 배포해주는 사이트를 찾게 되었습니다. 심지어 github에 올라가있는 repository를 알아서 배포까지 해주는! 그리고 수정 된 코드를 github에 push 해주면 실시간으로 배포된 사이트도 업데이트 해주는! 아주 지리는(?) 사이트입니다. Netlify 로 배포하는 방법에 대해서 알아보겠습니다. 가장 먼저 https://www.netlify.com/ 에 sign up을 해줍니다. 다음 Team over..

REACT 2021.10.21

C# event에서 listener들을 unsubscribe하는 법

유니티에서 제공하는 UnityEvent 클래스에서는 RemoveAllListeners()라고 하는 함수가 subsribe 되어있는 listener들을 다 unsubscribe 해주는 역할을 합니다. 그렇다면 c# 의 event에서는 subscribers 들을 어떻게 unsubscribe 할 수 있을까요? C# event에서도 등록되어있는 delegate를 array로 가져올 수 있는 함수가 있습니다. 바로 GetInvocationList()입니다. subsriber들을 array로 가져올 수 있다면 쉽게 그냥 foreach 문을 돌면서 -= 로 unsubsribe 해주면 되겠죠? 테스트를 위해 EventSubscriber class와 Monobehaviour 를 상속받는 EventInvoker class..

Unity & C# 2021.10.19

C# Extension Method 활용하여 MonoBehaviour에서 자주 사용하는 Delay 만들기

유니티에서 게임을 만들다가 보면 Delay(지연)을 주고 싶을 때가 많은 데요. Delay를 주는 방법으로 여러 방법이 있겠지만 개인적으로 자주 사용하는 방법은 유니티의 Coroutine를 사용하여 많이 구현하는데요. 그런데 이 Delay 코루틴도 반복해서 사용하다보니깐 이거를 C# Extension Method를 활용해서 MonoBehaviour클래스에서 편하게 사용할 수 있도록 하면 좋겠다는 생각이 들었습니다. 먼저 C# Extension Method가 무엇이냐면, 이미 구현된 타입(클래스, 인터페이스,...)에 추가로 Method를 만들 수 있는 기능입니다. Extension Method 말 그대로 확장된(추가된) 메소드라고 생각하면 좋을 듯합니다. 아래는 보통 Delay를 주고 싶을 때 Corou..

Unity & C# 2021.10.19

React Small Project, 견상테스트

얼마전 React 입문 과정으로 레트로 감성 Retro-Nwitter를 만들고 나서 또 다른 사이트 프로젝트 뭘 할 수 있을까 고민하다가, 예전에 유튜버 조코딩님의 유튜브 영상 중 구글 Teachable Machine을 사용해서 동물상 테스트를 만드는 것이 기억이 났다. 그래서 나도 Teachable Machine을 사용해서 "나는 어떤 개를 닮았을까?"가 갑자기 떠올라 견(犬)상 테스트를 만들어보기로 했다. 항상 취약했던 디자인은 어떻게 할까 고민을 하다가 Retro-Nwitter에서 썼던 동일한 글꼴, 둥근모꼴을 사용하는 것이 편하겠다는 생각이 들었고, 어차피 디자인을 이쁘게 못할꺼라면 최대한 심플하고 단순하게 해야겠다는 생각이 들어 그냥 흰 바탕에 글꼴을 강조하는 느낌으로 하기로 했다. 대표 이미지..

REACT 2021.10.08