본문 바로가기
반응형

유니티245

유니티 - Light Rotate로 간단히 낮과 밤 구현하기 Unity 전체 링크 참고 - 타임 슬라이더 만들기 - Light Rotate로 간단히 낮과 밤 구현하기 - 슬라이더로 안개 조절하기 Time Slider가 움직이면 낮과 밤처럼 보이도록 간단히 구현해보자. TimeManager 스크립트에서 Light와 초기 Light의 rotation을 저장할 Vector3를 추가한다. public Light sunLight; private Vector3 initAngle; 낮과 밤은 Directional Light의 X축 회전으로 충분히 가능하다. 따라서 Rotation의 Y, Z 값을 고정하기 위해 initAngle에 저장한다. void Start() { initAngle = sunLight.transform.localEulerAngles; ... } valueCh.. 2022. 3. 24.
유니티 - 타임 슬라이더 만들기 (Time Slider) Unity 전체 링크 참고 - 타임 슬라이더 만들기 - Light Rotate로 간단히 낮과 밤 구현하기 - 슬라이더로 안개 조절하기 아래와 같이 슬라이더를 0 ~ 1로 조절하면 00 : 00 : 00 ~ 24 : 00 : 00으로 조절되는 Time Slider를 만들어보자. Canvas > 빈 오브젝트 아래에 Slider와 Text를 추가한다. Slider의 이벤트를 위해서 EventSystem도 추가해둔다. DateTime을 쓰기 위해 System을 선언하고, Slider, Text를 사용하기 위해 UnityEngine.UI를 선언한다. using System; using System.Collections; using System.Collections.Generic; using UnityEngine;.. 2022. 3. 24.
유니티 - 자식 오브젝트를 원형으로 배치하기 (Circular Arrangement) Unity 전체 링크 아래의 Cube의 자식 오브젝트들을 원형으로 배치해보자. 먼저 원형으로 배치하기 위해 적당한 반지름을 정한다. float radius = 2.0f; transform에는 자식 오브젝트의 개수를 구할 수 있는 childCount가 있다. int numOfChild = transform.childCount; 자식 오브젝트의 개수를 구하였으므로, 적절한 각도를 배치한다. 360도 = 2pi이므로, 오브젝트 개수로 나눈 후 i 를 곱하면 된다. 그리고 GetChild(index)를 이용해 i 번째 자식 오브젝트에 접근하여 position을 수정한다. for (int i = 0; i < numOfChild; i++) { float angle = i * (Mathf.PI * 2.0f) / nu.. 2022. 3. 23.
유니티 Color Picker로 오브젝트 색깔 변경하기 Unity 전체 링크 오브젝트를 더블 클릭하면, 색상을 선택할 수 있도록 구현해보자. color picker에 연결할 오브젝트를 추가한다. public GameObject linkedObject; color picker는 유일하도록 싱글턴으로 만든다. private static CircleColorPicker instance = null; public static CircleColorPicker Instance { get { if (null == instance) instance = FindObjectOfType(); return instance; } } private void Awake() { if (null == instance) instance = this; } 게임이 시작되면 color picke.. 2022. 3. 20.
유니티 색상 변경 에디터 만들기 (Circle Color Picker) Unity 전체 링크 색상을 선택하면 선택된 Color 값을 읽을 수 있는 색상 변경 에디터, Circle Color Picker를 만들어보자. 먼저 원하는 color picker를 다운받는다. 다운받은 이미지를 Texture Type : Sprite (2D and UI)로 변경하고 Read/Write Enabled = true로 설정한다. Read/Write Enabled를 설정하면 런타임에 mesh를 써넣는 것을 가능하고 메모리에 복사본이 생성된다. 그리고 선택된 색깔을 알아보기 위해 picker로 쓸 이미지도 sprite로 만들어둔다. 그리고 EventSystem, Canvas를 추가한다. Canvas - ColorPicker(Empty) - Palette(Image), Picker(Image)로 .. 2022. 3. 20.
유니티 C# Dictionary와 delegate를 이용한 함수 포인터 Unity 전체 링크 C, C++에서의 함수 포인터를 C#에서는 delegate를 이용한다. 심플 이벤트 핸들러에서 event 변경에 따라 함수를 실행하고 싶다고 하자. 함수 포인터를 사용하지 않는다면 CURRENT_EVENT를 if/else로 매번 처리해서 이벤트를 실행해야 한다. string currentEvent { set { if (CURRENT_EVENT == value) return; CURRENT_EVENT = value; if (CURRENT_EVENT == "이벤트 시작") startEvent(); else if (CURRENT_EVENT == "이벤트 종료") endEvent(); /* ... */ } get { return CURRENT_EVENT; } } Dictionary와 del.. 2022. 3. 18.
유니티 - 변수 변경시 이벤트 발생 (Simple Event Handler) Unity 전체 링크 참고 - 퍼블릭 변수 변경시 이벤트 발생 (Public Value Event Handler) C#의 프로퍼티를 이용하면 변수가 변경될 때, 이벤트를 발생할 수 있다. property는 C#에서 제공하는 간단한 get, set 메서드이다. currentEvent의 변경이 감지된다면 (currentEvent != value) CURRENT_EVENT의 값을 변경하고 원하는 함수를 실행하면 된다. string CURRENT_EVENT = ""; string currentEvent { set { if (CURRENT_EVENT == value) return; CURRENT_EVENT = value; Debug.Log(CURRENT_EVENT); } get { return CURRENT_EV.. 2022. 3. 18.
유니티 Attribute - Requirecomponent로 Component 강제 설정하기 Unity 전체 링크 더블 클릭의 경우 OnMouseUp으로 구현하였기 때문에 해당 스크립트를 Component로 가지는 오브젝트는 반드시 콜라이더가 필요하다. 하지만 테스트 도중 실수로 collider를 지우거나 collider가 애초에 없는 경우가 있다. 이런 케이스에서는 당연히 collider가 있다고 착각하기 쉽기 때문에 디버깅이 어려울 수 있다. Requirecomponent를 이용하면 필요한 Component를 강제할 수 있다. 아래는 DoubleClickTest에서 콜라이더를 강제한다. using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(Collider))] .. 2022. 3. 17.
유니티 Attribute - 직렬화로 Inspector에 보여주기 Unity 전체 링크 private와 같은 비공개 변수를 인스펙터에서 보고 싶을 때, [SerializeField] 속성을 사용한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class SerializableTest : MonoBehaviour { [SerializeField] private int a; } private으로 선언했는데도 변수 a가 보이는 것을 알 수 있다. 이제 Vector3 배열을 public으로 선언해보자. using System.Collections; using System.Collections.Generic; using UnityEngine; public class S.. 2022. 3. 15.
반응형