Life Archive
[Unity] TimeCheck for Reset
게임 개발 학습/Unity 2023. 9. 26. 12:52

INTRO VR 전시 프로젝트를 진행하면서 5분 동안 유저의 이동이 없을 때 시작 Scene으로 이동하는 기능을 개발하게 되었다. 기존 Input System을 이용한다면 UnityEngine 내부에 있는 Input.anyKeyDown을 이용하면 간단히 구현할 수 있지만, XR Interaction Toolkit Package를 사용하면서 새로운 Input System에 대해서는 작동하지 않았다. 그래서 transform.position과 Coroutine을 이용하여 Input System없이 간단하게 구현해보았다. CONTENT 먼저, TimeSceneChagne.cs의 전체 코드는 아래와 같다. using System.Collections; using System.Collections.Generic;..

[Unity] Color 값 받아오고 설정할 때의 주의점
게임 개발 학습/Unity 2023. 9. 26. 12:51

UnityEngine 내 Color를 사용할 때 주의해야할 점이 있다. 드로잉 월드를 제작하면서 로컬이 색깔을 선택하고 서버로 보낼 때, 선택한 색깔의 r,g,b,a 값을 number로 보냈다. 서버에서는 받은 data를 로컬을 제외한 다른 플레이어에게 보내며, 데이터를 받은 다른 플레이어들은 Color을 아래와 같이 설정했었다. Connector.Instance.DrawStartRes = (data: { sessionId: string; lineWidth: number; color_r: number; color_g: number; color_b: number; color_a: number; }) => { const line = Manager.Resource.Instantiate("Prefabs\\Lin..

article thumbnail
[Unity] Observer Pattern in Unity
게임 개발 학습/Unity 2023. 9. 26. 12:50

유니티에서 옵저버 패턴을 사용하여 프로그래밍한 것은 매우 중요한데, 만약 두 개의 컴포넌트가 서로의 정보(변수, 메서드 등)를 공유해야하는 상황에서 서로 결합(tightly-coupled)되어있다면, 서로가 영향을 미치기에 하나의 컴포넌트를 수정하면 다른 컴포넌트에서 에러가 발생하기에 수정에 불리하다. 이는 객체지향 원칙에 걸맞지 않는 상황인 것이다. 디자인 패턴 중 옵저버 패턴(Observer Pattern)은 시스템을 확장성(Scalable), 유지성(Maintainable), 비결합성(Loosely-coupled) 모두를 충족하게 만들어준다. OOP 코드를 작성할 때, 비결합(Decoupled)으로 코드를 작성해야 에러가 날 확률도 적고 모듈화하기도 쉬우며, 디버깅하기도 쉽다. 아래 코드는 싱글톤 ..