-
Notifications
You must be signed in to change notification settings - Fork 0
DragDropSystem
-
배경
상용 게임들 처럼 GUI → GUI 로 Drag & Drop 으로 반응해서 적당한 동작을 실행하는 시스템
-
기능
-
오브젝트의 OnOver, OnClick ,OnDrag 같은 입력 이벤트들은 제공되는 Unity.iEventHandler 활용
-
Drag & Drop의 srcGUI는 DragDropObject(DDO)로, dstGUI는 ResponseByDrop(RBD)로 구현
-
DDO → RBD의 일반적인 Drag & Drop 상호작용 발생 시, 각 반응 시나리오는 아래와 같다
- DDO.OnOver → DDO 위에 커서를 올릴 시
- DDO.OnClick → DDO를 클릭 시
- DDO.OnDragStart → DDO를 클릭 후 마우스를 이동 시
- DDO.OnDrag → OnDragStart 발생 후, 마우스 이동 시
- RBD.OnOver → OnDragStart 발생 후, RBD위에 커서를 올릴 시
- DDO.OnDragEnd → OnDragStart 발생 후, 마우스 클릭을 해제 시
- RBD.OnResponse_byDropEvent → RBD.OnOver 중에 DDO.OnDragEnd이 발생 시
-
위와 같은 구성으로 인해 여러 상황의 이벤트를 유동적으로 처리 가능하다.
-
-
배경
Drag & Drop 시나리오의 시작점이 될 GUI들에게 해당 컴포넌트 부여
-
기능
- 이 컴포넌트들은 커서가 OnOver됬을 때 약한 focus효과를 추가한다
- 기본적으로 가방에 들어있는 각각의 Item들은 이 항목을 가진다.
- 클릭부터 시작하여 데이터를 메니저에게 보냄으로 드래그만 처리하는게 아닌 클릭같은 기타등등까지 처리한다.
- 만약 OnDragEnd가 발생 시 아무 RBD와도 반응하지 못했다면 드래그 시작할 때 저장해뒀던 posiition 데이터를 근거로 본인 자리로 돌아온다.
- 만약 드래그를 시작했을 경우 해당 GUI는 화면 가장 위로 띄워지며 커서의 위치랑 계속 동기화 하여 커서를 따라다니도록 구현한다.
-
배경
Drag & Drop 시나리오의 도착점이 될 GUI들에게 해당 컴포넌트 부여한다.
-
기능
-
이 컴포넌트들은 커서가 OnOver됬을 때, 만약 DDO.OnDragStart를 만족한다면 약한 focus효과를 추가한다.
-
기본적으로 Sell Item Zone, Purchase Item Zone, Enhance Item Zone 등등은 항목을 가진다.
-
focus를 띄울 때 각각의 RBD는 본인의 조건과 비교하여 알맞은 이펙트를 띄운다.
→ ex) RBD_onlySkill에 Equipment Item 을 Drag & Drop한다면 불가능하다는 effect를 띄움
→ 해당 조건판단은 일단은 RDM에 실려있습니다, 씬마다 다른 조건이 나와야할수도 있다봐서 RDM에 했지만 결국 씬마다 다른 상황이 나오진 않아서 회의적.
-
-
배경
Drag & Drop 시나리오의 시작점과 도착점이 둘다 가능한 GUI들에게 부여될 컴포넌트
-
기능
- InventorySlot같은 경우, 아이템을 할당, 작업 및 해제를 수행해야 하기에 조건1을 만족하기 때문에 DDO와 RBD의 기능을 둘 다 수행할 수 있는 iSlot을 구현했다.
- 물론 이곳의 RBD도 조건이 존재 할 수 있다. 예를들어 Equip Slot에 Skill Item을 Drag & Drop 한다면 불가능하지만 Equipment 장비들은 계속 갈아 끼울 수 있다.
- 또한 해당 슬롯들은 OnClick Event 시 ItemInfo를 리턴하면서 본인에게 할당 된 ItemUnit Data를 Info Data GUI에 게시를 구현했다.
-
배경
일관된 RBD DDO 상호관 이벤트 처리를 위해 구현
-
기능
- RDM은 모든 DDO & RBD 를 가지고있는 Canvas들을 자식으로 가지고있다.
- 또한 RDM은 대다수의 오브젝트들을 참조 하고 있다.
- 결국 TopParent을 참조하면 RDM이 나오므로 이벤트 발생 시 DDO, RBD는 RDM에게 알린다.
- 그 후, RDM은 본인이 참조하는 오브젝트들과 상호작용해서 원하는 작업을 수행한다.
Overall
-
[ List up ]
-
Interface iDragDropObject ( = DDO )
-
Interface iResponseByDrop ( = RDB )
-
Interface iInvenSlot ( = DDO && RDB )
-
Interface iRDB_DDO_Manager ( = RDM )
- RDM : Event_Swap Item
- RDM : Event_Enhance Item
- RDM : Event_Equip Item
- RDM : Event_Spend Item
- RDM : Event_Consume Item
- RDM : Event_Consume Item
-
-
[ List up ]
- Arrive Scene ( = on init )
- Exit Scene ( = on destory )
- Inven Set ( = on Arrive & Exit )
-
[ List up ]
- Play Arrive Shader
- Play Exit Shader
Scene_Map
-
[ List up ]
- [ SceneProcessor_Map ]
- [ Btn bind ]
- [ Light Shading ]
- [ Data Ctrl ]
- [ Reduce Batch ]
- Custom Shader : CustomVoronoi
-
[ List up ]
- Class TouchableNode
- Class EventNodeDataToPlace
- New & Load Game
- ProgressMap
-
[ List up ]
- Build Foundation Data totally
- Build Detailed Data
- Get Stem Data
- Get Leaf Data
-
[ List up ]
- Set Event Pos
- Connect Road
- Set node to detailed
- Instantiate Siluet Node
Inventory
-
- Load GUI & Upload with Item Data
- Blur Background Texture
- RBD : Equip Slot
- RBD : Consume Item
Scene_Camp
-
[ List up ]
- SceneProcessor_Camp
- Cook Sysytem
- RBD : Ingredient Slot
[ List up ]
- Event : Add Ingredient Item
- Event : Reset
- Event : Cook Func
Scene_Shop
-
[ List up ]
- SceneProcessor_Shop
- RBD : ItemInfo
- Custom Particle: PopGainEffect