์ผ๋จ ์ด ์ฝ๋๋ ์ ๋ํฐ ๋ฐ๋ชจ์ธ ์คํ์ด์ค์ฝ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ค ์ผ๋ถ๋ง ๋นผ์จ๊ฑฐ์ผ
์ฝ๋ ํ์์ ์ธ๊ฑฐ ๋นผ๊ณ ์น๋ค ์๋ผ๋ธ๊ฑฐ๋ผ ๊ทธ๋ฆฌ ์ด๋ ต์ง๋ ์์๊ฑฐ์ผ
์ฝ๋ฉ ์ํ๋์ ๋ค์ ์ฌ๊ธฐ์ ๋ ๋ถ์ฌ์ ์ฌ์ฉํ๋ฉด๋จ
์ด๋ฒคํธ ๋ฐฉ์?์ ์ฝ๋์ ๋
ํ์ผ๋ก ์ฝ๋ฉ ๋ฐฐ์ด๊ฑฐ๋ผ ์ฉ์ด๋ฅผ ์ ๋ชจ๋ฆ
https://drive.google.com/file/d/1C5rPZ6ORBTE66skelopVvFAEksCuTEpl/view?usp=share_link
SampleCode.zipSampleCode.zipdrive.google.com
ํด๋ ํ๋ฉด NaughtyAttributes.unitypackage ์ด๊ฑฐ ๋จผ์ ์ ๋ํฐ์ ๋ฃ์ด์ผํจ
์ด๊ฒ ์ฒซ๋ฒ์งธ ์ฌ์ง๋ณด๋ฉด ์ธ์คํฉํฐ์ฐฝ ์คํฌ๋ฆฝํธ OnButtonEvent ๋ณด๋ฉด ์กฐ๊ธ ํน์ดํ๊ฒ ์๊ธด๊ฒ ์์ ์ด๋ ๊ฒ ๋ง๋ค๋ ค๊ณ ์ฌ์ฉํ๋์์
์
//NaughtyAttributes ์ด๊ฑฐ๋ ์ ๋ํฐ ์ธ์คํฉํฐ ํ์ฅํด์ ๊ตฌ๊ธ์ด๋ ์ ๋ํฐ ์คํ ์ด๊ฐ์ ๊ฒ์ํ๋ฉด ๋์ค๋๊น ์๊ณ ์ถ์๊ฑฐ ์์ผ๋ฉด ๊ณต๋ถํด๋ด
์ฝ๋ ๊ตฌํ๋ถ๋ถ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestSample : ActionBase
{
public override void Execute(GameObject instigator = null)
{
Debug.Log(Name);//// ์ฌ๊ธฐ๋ค ์ํ๋๊ฑฐ ๊ธฐ๋ฅ ๋ง๋ค์ด ๋ฃ์ผ๋ฉด๋จ
}
}
์ฝ๋ ์คํ์ํค๋ ๋ถ๋ถ
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using NaughtyAttributes;
[RequireComponent(typeof(EventTrigger))]
public class OnButtonEvent : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
[ReorderableList]
public Callable[] onTouchDown, onTouchUp;/// Callable ์ด ํ์ ๋ณ์๋ก ๋ง๋ค์ด์ ๋ฐ์ผ๋ฉด ๋จ
void IPointerDownHandler.OnPointerDown(PointerEventData eventData)
{
Callable.Call(onTouchDown, gameObject);// ์ ๋ณ์ ๋ฐฐ์ด์์ ์๋ ์ฝ๋ ์คํ ์ํค๋ ๋ถ๋ถ
}
void IPointerUpHandler.OnPointerUp(PointerEventData eventData)
{
Callable.Call(onTouchUp, gameObject);
}
}
์ด๋ ๊ฒ ํ๋ ์ฌ์ฉํ๋ ์ด์ ๊ฐ
A๋ผ๋ ์ฝ๋์์ B๋ผ๋ ์ฝ๋๋ฅผ ๋ถ๋ฌ์์ ์คํ์ ์์ผ์ผ ํ ๋ ๊ฒ์ปดํฌ๋ํธ ๊ฐ์๊ฑฐ๋ก ๋ง๋ค์๋ ์ ์ฝ๋๋ ๋ค Callable ์ด๊ฑฐ ํตํด์ํ๋๊ฑฐ๋ผ ๊ฐํธํ๊ฒ ์คํ ์ํฌ์ ์์ด
(TestSample : ActionBase ์ด ์ฝ๋์์ ์ก์
๋ฒ ์ด์ค์ชฝ ๋ณด๋ฉด Callable์ด๊ฑฐ ์์ ๋ฐ๊ณ ์์)
์๋๋ฉด ์ด๋ฒคํธ ํ์์ผ๋ก ๋ฒํผ์ ๋๋ฅด๋ฉด ์คํ ์ํจ๋ค ์๋๋ฉด ๋ญ๊ฐ ์ถฉ๋ํ์๋ ์ถฉ๋ํ ์ค๋ธ์ ํธ์ ์๋ TestSample : ActionBase ์ด์ฝ๋๋ฅผ ์คํ์ํจ๋ค ๋ฑ๋ฑ
์ด๋ฐ์์ผ๋ก ๋ญ๊ฐ ์ด๋ฒคํธ๊ฐ ์๊ฒผ์๋ ์ฌ์ฉ ๊ฐ๋ฅํจ
๋ด๊ฐ ์ค๋ ฅ์ด ๊ตฌ๋๊ธฐ๋ผ ์ด๋ฐ๊ฑฐ ์์ฌ๋ฆฌ๋๋ ๊ฐ๋ ๋ํ ํ๋๊น ์์ ์ ์ด๋ณด๋ ์๋๊ฑฐ ๊ฐ์์ ๋์์ด ๋ ๊น ์ถ์ด์ ์ฌ๋ฆผ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
ํ์ฅ์ฑํ๊ณ ์ธ๋ถ์์ ์ ๊ทผ์ด ์ฌ์ด๊ฑฐ? ๊ทธ๋ฆฌ๊ณ ์ ๋ํฐ ์ธ์คํฉํฐ ํ์ฅํด๋ก ์ ๋ํฐ์ด๋ฒคํธ์ฒ๋ผ ์ ๋ํฐ์์์๋ ํธํ๊ฒ ๋ง๋ค์๋๋ผ๊ตฌ (์ธ์คํฉํฐ ํ์ฅํด์ ์ด์ฉํด์ ์ฌ์ฉ์ฑ ํธํ๊ฒ ๋ง๋ค์ด ์ ธ์์ ์ฝ๋๋ CallablePropertyDrawer ์ด๊ฑฐ์) ๋ด๊ฐ ์ฝ๋ฉ์ ์ํ๋๊ฒ ์๋๋ผ์ ์ ๋ํฐ์ด๋ฒคํธ ์ฌ์ฉ์ ์ ๋๋ก ๋ชปํด์ ๊ทธ๋ด์๋ ์์ด์ใ ใ ์ ๋ํฐ ๋ฐ๋ชจ ์คํ์ด์ค์ฝ ๋ฏ์ด๋ณด๋ค ํธํ๊ฑฐ ๊ฐ์์ ์ด๊ฑฐ ๊ฐ์ ธ๋ค ์ฐ๊ณ ์์์ง ๊ทผ๋ ์์งํ ์๊ธฐ๊ฐ ํธํ ๋ฐฉ์์ผ๋ก ํ๋๊ฒ ์ต๊ณ ์ธ๊ฑฐ๊ฐ์
NaughtyAttributes ์ด๋ฆ๋ถํฐ ์์ํ๋ฐ..?
์จ๋ดค๋๋ฐ ๋ณ๊ฑฐ์๊ณ ๊ทธ๋ฅ ์ค๋์ฒ๋ผ ์ธ์คํํฐ ์ ๋ฆฌํ๋ ๋์