본문 바로가기
반응형

개발/Unity235

유니티 - 타임 슬라이더 만들기 (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.
유니티 - 롱 클릭 progress bar 처리하기 Unity 전체 링크 참고 - 롱 클릭 구현하기 유니티 long click을 구현하였으니, 얼마나 오랫동안 클릭해야 하는지 progress bar로 보여주도록 하자. 먼저 Canvas를 만들고 Image에 적당한 원 이미지를 입힌다. 그리고 Image Type을 Filled로 Fill Method는 Radial 360으로 변경한다. 아래와 같이 카메라에 Image가 나온 것을 확인할 수 있다. 이미지의 Scale은 게임 오브젝트에 적당히 맞추면 된다. Image를 사용하기 위해 UI를 선언한다. using UnityEngine.UI; progress bar가 게임 오브젝트를 따라다니게 하기 위해 GameObject로 선언하고, Start를 할 때, Image를 progressBar에서 얻는다. 클릭 이벤.. 2022. 3. 15.
반응형