【Unity】まだ口痛いっす。とりあえずuGUIでドラッグアンドドロップのやり方 その1
こんにちは!
親知らず抜いて、そろそろ1週間が経ちそうですが、いまだに縫った頬の内側が痛くて腫れてます・・・
歯抜いたところは大丈夫そうなんですけどね・・・・
まぁあと1週間もすれば痛みなくなるでしょう・・・
さて、Unityの話ですが・・・先週まともにUnity触ってないんす・・・
まぁ軽く。
uGUIにて、ドラッグアンドドロップを使う方法。
このネタ自体は他のブログさんを参照にさせて頂きました。
ただ、うまくいかなかったため、俺が勝手にいじった感じです。
まず第1回目はドラッグする側のオブジェクトについて。
こんな感じで画面を作ります。

上にある白い四角2つが、それぞれCanvas直下のdrop1とdrop2になります。
動かす方は、DragObjの下にあるdrag1~drag4になります。
まずは以下のコードを作成。
DragObject.cs
OnDragメソッドのポジションについては、画面のサイズ/2で計算してます。
今回は 横480x縦854で指定しているので、Vector3はnew Vector3(posi.x - 240f,posi.y - 427f,0f);となっています。
このコンポーネントを、各drag1~drag4につけます。
各オブジェクトの「public Transform parentTransform;」
には、DragObjをアサインします。
これでドラッグでオブジェクトが動くようになりました!いぇい!
※動きはクリックしてみてね!

とりあえず今日はこんな感じ!
次回はドロップ部分について書いていきたいと思います。
あでゅ~ノシ
親知らず抜いて、そろそろ1週間が経ちそうですが、いまだに縫った頬の内側が痛くて腫れてます・・・
歯抜いたところは大丈夫そうなんですけどね・・・・
まぁあと1週間もすれば痛みなくなるでしょう・・・
さて、Unityの話ですが・・・先週まともにUnity触ってないんす・・・
まぁ軽く。
uGUIにて、ドラッグアンドドロップを使う方法。
このネタ自体は他のブログさんを参照にさせて頂きました。
ただ、うまくいかなかったため、俺が勝手にいじった感じです。
まず第1回目はドラッグする側のオブジェクトについて。
こんな感じで画面を作ります。

上にある白い四角2つが、それぞれCanvas直下のdrop1とdrop2になります。
動かす方は、DragObjの下にあるdrag1~drag4になります。
まずは以下のコードを作成。
DragObject.cs
using UnityEngine;
using UnityEngine.EventSystems;
public class DragObject : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler {
public static DragObject dragObject;
public Vector3 initPosition;
public Transform parentTransform;
private CanvasGroup canvasGroup;
private Transform canvasTransform;
public CanvasGroup CanvasGroup { get { return canvasGroup ?? (canvasGroup = gameObject.AddComponent()); } }
public Transform CanvasTransform { get { return canvasTransform ?? (canvasTransform = GameObject.Find("DragObj").transform); } }
public int charaNo;
void Awake() {
initPosition = transform.localPosition;
}
public void OnBeginDrag(PointerEventData eventData) {
dragObject = this;
transform.SetParent(CanvasTransform);
CanvasGroup.blocksRaycasts = false;
CanvasGroup.alpha = 0.5f;
}
public void OnDrag(PointerEventData eventData) {
Vector3 posi = Input.mousePosition;
posi = new Vector3(posi.x - 240f,posi.y - 427f,0f);
transform.localPosition = posi;
}
public void OnEndDrag(PointerEventData eventData) {
if (transform.parent == canvasTransform) {
transform.SetParent(parentTransform);
}
dragObject = null;
CanvasGroup.blocksRaycasts = true;
CanvasGroup.alpha = 1.0f;
}
public void Update() {
if (dragObject == null) {
transform.localPosition = initPosition;
}
}
}
OnDragメソッドのポジションについては、画面のサイズ/2で計算してます。
今回は 横480x縦854で指定しているので、Vector3はnew Vector3(posi.x - 240f,posi.y - 427f,0f);となっています。
このコンポーネントを、各drag1~drag4につけます。
各オブジェクトの「public Transform parentTransform;」
には、DragObjをアサインします。
これでドラッグでオブジェクトが動くようになりました!いぇい!
※動きはクリックしてみてね!

とりあえず今日はこんな感じ!
次回はドロップ部分について書いていきたいと思います。
あでゅ~ノシ
Category: 開発日記(Unity)
« 【Unity】懲りずにカーソルネタだよ。カーソル変えてみたんだよ。 | 【Unity】uGUIでマウスカーソルの位置にオブジェクトがあるか確認したかったよ »
コメント
| h o m e |