์ผ๋‹จ ์ด ์ฝ”๋“œ๋Š” ์œ ๋‹ˆํ‹ฐ ๋ฐ๋ชจ์ธ ์ŠคํŽ˜์ด์Šค์‰ฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ค‘ ์ผ๋ถ€๋งŒ ๋นผ์˜จ๊ฑฐ์•ผ
์ฝ”๋“œ ํ•„์ˆ˜์ ์ธ๊ฑฐ ๋นผ๊ณ  ์‹น๋‹ค ์ž˜๋ผ๋‚ธ๊ฑฐ๋ผ ๊ทธ๋ฆฌ ์–ด๋ ต์ง€๋Š” ์•Š์„๊ฑฐ์•ผ
์ฝ”๋”ฉ ์ž˜ํ•˜๋Š”์• ๋“ค์€ ์—ฌ๊ธฐ์„œ ๋” ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•˜๋ฉด๋จ

์ด๋ฒคํŠธ ๋ฐฉ์‹?์˜ ์ฝ”๋“œ์ž„ ๋…ํ•™์œผ๋กœ ์ฝ”๋”ฉ ๋ฐฐ์šด๊ฑฐ๋ผ ์šฉ์–ด๋ฅผ ์ž˜ ๋ชจ๋ฆ„

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cea82fa11d0283167b3609c5c7cf1dd93c16921856207a2b9d6cb955c9a8c321ee097d49606144468ecd76a232f599fb82a6ef74067758d2343f6

7ff3c028e2f206a26d81f6e64e81776d37



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 ์ด์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค ๋“ฑ๋“ฑ

์ด๋Ÿฐ์‹์œผ๋กœ ๋ญ”๊ฐ€ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ๊ฒผ์„๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ


๋‚ด๊ฐ€ ์‹ค๋ ฅ์ด ๊ตฌ๋Œ€๊ธฐ๋ผ ์ด๋Ÿฐ๊ฑฐ ์•ˆ์˜ฌ๋ฆฌ๋Š”๋Œ€ ๊ฐ€๋” ๋ˆˆํŒ…ํ•˜๋‹ˆ๊นŒ ์™„์ „ ์ƒ ์ดˆ๋ณด๋„ ์žˆ๋Š”๊ฑฐ ๊ฐ™์•„์„œ ๋„์›€์ด ๋ ๊นŒ ์‹ถ์–ด์„œ ์˜ฌ๋ฆผ