미리보기아래와 같은 효과를 구현했다코드using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;// 스크롤 했을 때 element가 뷰포트 중앙에서 멀어질수록 스케일이 작아지는 효과 클래스public class ScrollRectElementScaleEffect : MonoBehaviour{ [SerializeField] private ScrollRect myScrollRect; public float distanceFactor = 0.01f; private void Start() { OnValueChanged(Vector2.zero); } ..
이 글 부터는 다시 독백체로 돌아갑니다가독성이 그게 더 좋은거 같네요 아래와 같은 Grid Layout Group이 있다앵커를 수평 Stretch로 맞췄고,현재 화면 비율에서 좌우 여백을 맞췄다 그리고 화면비율을 바꿔보면 아래 그림처럼 여백이 안맞게된다모든 화면비율에서 균등한 좌우 여백을 위해 동적으로 계산해서 적용해줘야 한다 코드를 작성했다당장 범용성보다는 이 케이스를 빨리 해결하기위해 작성한거라그리드의 Start Corner가 왼쪽 위(Upper Left)인 경우만 고려해서 작성했고,상하 여백은 고려하지 않았다 추가로, 테스트를 위해 오딘 익스펙터 에셋의 `[Button]`속성을 사용했다using System.Collections;using System.Collections.Generic;using..
짧은 글 `ObservableLongPointerDownTrigger.cs`- 판정을 원하는 UI오브젝트에 컴포넌트로 추가using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UniRx;using UniRx.Triggers;using UnityEngine.EventSystems;public class ObservableLongPointerDownTrigger : ObservableTriggerBase, IPointerDownHandler, IPointerUpHandler{ public float IntervalSecond = 1f; Subject onLongPointerDown..
개요 -이 작업을 하게된 계기 효과음 사운드 적용 작업을 시작하게 됐는데 생각해보니 UI버튼에 사운드가 들어갈 대비를 미리 안했었다. 그래서 그 많은 UI에 일일히 사운드를 연결해줘야하나 고민하다가 Button 클래스를 상속받아 새로운 버튼 클래스를 만들어서 확장성을 넓히기로 결정했다. 본문 1. 일단 상속을 받아보자 ! 먼저 Button 클래스를 냅다 상속받고 변수를 하나 추가한 뒤에 인스펙터를 확인해보자. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using UnityEditor; using UnityEdit..
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class UnitContent : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler { // 부모 그리드 레이아웃 그룹 [SerializeField]private GridLayoutGroup parentGroup; // 드래그 제한 범위 [SerializeField] private RectTransform dragArea; private PointerEventData currentEventDa..
private bool IsPointerOverUI() { PointerEventData pointerEventData = new PointerEventData(EventSystem.current); pointerEventData.position = Input.mousePosition; ListRaycastResult> results = new ListRaycastResult>(); EventSystem.current.RaycastAll(pointerEventData, results); for (int i = 0; i results.Count; i++) { if (results[i].gameObject.l..