前提・実現したいこと
Unity2Dでカードゲームを作っているのですが、画面内のスペースの都合上墓地をポップアップウィンドウとして表示し、Scroll Viewを使用して実装しました。
ですが、Scroll View内のカードを外の配置可能な領域にドラッグ&ドロップで移動させようとすると、Scroll Viewの範囲外に出るとカードのテクスチャが描写されなくなります。(配置自体は可能)
加えて、外の配置可能な領域からScroll View内に配置することができません。
カードの移動はドラッグ&ドロップで統一したいので、この二つを可能にしたいです。
解決方法・手法わかる方いらっしゃいましたらご教授いただけると幸いです。
オブジェクトの親子関係
Unity
1- CardGame 2 - Main Camera 3 - Canvas 4 - PlayerHand 5 - Bench 6 - Batle 7 - Field 8 - Side 9 - Coin 10 - Text 11 - Text 12 - Return 13 - Text 14 - Trash 15 - Text 16 - PopUp_UI 17 - Button 18 - Text 19 - Scroll View 20 - Viewport 21 - Content 22 - Scrollbar Horizonal 23 - Sliding Area 24 - Scrollbar Vertical 25 - Sliding Area
ソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.EventSystems; 5 6//カードにアタッチしているスクリプト 7public class CardMovement : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler 8{ 9 public Transform cardParent; 10 11 public void OnBeginDrag(PointerEventData eventData) // ドラッグを始めるときに行う処理 12 { 13 cardParent = transform.parent; 14 transform.SetParent(cardParent.parent, false); 15 GetComponent<CanvasGroup>().blocksRaycasts = false; // blocksRaycastsをオフにする 16 } 17 18 public void OnDrag(PointerEventData eventData) // ドラッグした時に起こす処理 19 { 20 transform.position = eventData.position; 21 } 22 23 public void OnEndDrag(PointerEventData eventData) // カードを離したときに行う処理 24 { 25 transform.SetParent(cardParent, false); 26 GetComponent<CanvasGroup>().blocksRaycasts = true; // blocksRaycastsをオンにする 27 } 28}
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.EventSystems; 5 6// PlayerHand,Bench,Batle,Field,Side,Contentにアタッチしているスクリプト 7public class DropPlace : MonoBehaviour, IDropHandler 8{ 9 public void OnDrop(PointerEventData eventData) // ドロップされた時に行う処理 10 { 11 CardMovement card = eventData.pointerDrag.GetComponent<CardMovement>(); // ドラッグしてきた情報からCardMovementを取得 12 if (card != null) // もしカードがあれば、 13 { 14 card.cardParent = this.transform; // カードの親要素を自分(アタッチされてるオブジェクト)にする 15 } 16 } 17} 18
補足情報(FW/ツールのバージョンなど)
- Unity 2020.3.13f1 Personal
- Visual Studio 2019
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。