1. 程式人生 > >unity中ScrollRect拖拽子物體無法拖拽

unity中ScrollRect拖拽子物體無法拖拽

在拖拽物體上繫結的本指令碼中,重寫一下UGUI的drag相關事件,調ScrollRect的drag等方法

public class DragScrollView : EventTriggerListener

{
    /// <summary>
    /// Reference to the scroll view that will be dragged by the script.
    /// </summary>

    public ScrollRect scrollView;

    // Legacy functionality, kept for backwards compatibility. Use 'scrollView' instead.
    [HideInInspector]
    [SerializeField]
    ScrollRect draggablePanel;

    Transform mTrans;
    ScrollRect mScroll;
    bool mAutoFind = false;
    bool mStarted = false;

    /// <summary>
    /// Automatically find the scroll view if possible.
    /// </summary>

    void OnEnable()
    {
        mTrans = transform;

        // Auto-upgrade
        if (scrollView == null && draggablePanel != null) {
            scrollView = draggablePanel;
            draggablePanel = null;
        }

        if (mStarted && (mAutoFind || mScroll == null))
            FindScrollView();
    }


    /// <summary>
    /// Find the scroll view.
    /// </summary>

    void Start()
    {
        mStarted = true;
        FindScrollView();
    }

    /// <summary>
    /// Find the scroll view to work with.
    /// </summary>

    void FindScrollView()
    {
        // If the scroll view is on a parent, don't try to remember it (as we want it to be dynamic in case of re-parenting)
        ScrollRect sv = mTrans.GetComponentInParent<ScrollRect>();


        if (scrollView == null) {
            scrollView = sv;
            mAutoFind = true;
        } else if (scrollView == sv) {
            mAutoFind = true;
        }
        mScroll = scrollView;

    }

public override void OnDrag(UnityEngine.EventSystems.PointerEventData eventData)
    {
        scrollView.OnDrag(eventData);
    }
    public override void OnInitializePotentialDrag(PointerEventData eventData)
    {
        scrollView.OnInitializePotentialDrag(eventData);
    }
    public override void OnBeginDrag(PointerEventData eventData)
    {
        scrollView.OnBeginDrag(eventData);
    }
    public override void OnEndDrag(PointerEventData eventData)
    {
        scrollView.OnEndDrag(eventData);
    }
}

相關推薦

unityScrollRect物體無法

在拖拽物體上繫結的本指令碼中,重寫一下UGUI的drag相關事件,調ScrollRect的drag等方法 public class DragScrollView : EventTriggerListener {     /// <summary>     ///

unity如何獲取所有物體的元件

    public GameObject[] obj;     void Awake()     {             for (int i = 0; i < obj.Length; i++)         {             for (int j = 0; j < obj[i

Unity2D物體

public class testButton : MonoBehaviour { public bool isMouseDown = false; private Vector3 la

unity滑鼠物體移動

指令碼附著在物體上,加上collide,非mesh collider </pre><pre name="code" class="csharp">using UnityEngine; using System.Collections; public

unity遍歷Transform的物體

oge div uil bug unit 所有 art reac ID 1、遍歷Transform直接子transform private void Start() { var Equipment = building.transform.Find

Unity動的簡單實現(UGUI以及3D物體

拖動的基本程式碼如下 [RequireComponent(typeof( RectTransform))] using UnityEngine; using System.Collections; u

ScreenToViewportPoint,WorldToViewportPoint,ViewportToWorldPoint的運用,實現一個簡單的對三維物體移動效果

  眾所周知,我們手機或者手機螢幕上的座標是一個二維平面的的座標值,而且這個座標是一畫素為單位的,也就是說這個是會根據你用的裝置的不同,你手機或者電腦上的座標的長寬最大值也就不同。   之前不太瞭解標題上三個方法的用法,走了不少彎路,然後下來仔細研究了一下,感覺還是挺有收穫的。   簡單說一下,我們在Unit

unity 任意的物件

孫廣東   2015.8.16 目的 :  我們能簡單的通過 滑鼠位置 得到目標物件  如果沒有使用剛體元件  Step - 1: 在3D專案中設定場景.  一個空物件命名為: DragAndDrop

Unity物體下的物體變形情況解決

一開始是正常的,後面是拖進Cube的子物體的情況。  朋友在做一個在地形上生成金幣的預製體時,發生了只要一執行,金幣就會變形的很嚴重。從網上也沒有找到合適的解決辦法,只是調整物體的LocalScal也無法解決這個問題,只是想起了以前的LookAt朝向軸無法更改時,

遍歷所有物體renderer(渲染器)的material(材質)並改變其alpha值實現若隱若現的效果

sys [] object c engine orm 器) gpo gin nts using UnityEngine;using System.Collections;using UnityEngine.UI; public class CubeControl : Mo

解決genymotion-arm-translation.zip無法安裝的問題

int fail 執行命令 tld word sdk tle and tex 1、問題由來 適用情況一:當我們啟動了Genymotion模擬器後,在AndroidStudio運行app時,彈出如下錯誤: INSTALL_FAILED_CPU_ABI_INCOMPATIABL

Unity物體碰撞後去掉相互之間的反彈力

velocity 去掉 自制 log 還需 -c -- alt unit 最近自制了一個的角色控制器(沒有重力的角色)時發現,角色碰撞到墻壁之後會有一個小小的反彈力導致角色有一個微弱的反彈位移,這樣給人一種不好的感覺。研究了一下,除了限制坐標軸( Rigidbody---C

unity UGUI的按下、動接口事件的實現

pointer 攝像機 sys parent generic npoi del 返回 ren using UnityEngine; using System.Collections.Generic; using DG.Tweening; using UnityEn

unity深度查找某個子物體和遍歷所有物體方法

new cal ons foreach 是我 destroy 目標 call void 本文總結一下關於unity的查找子物體的方法 首先說明一下這裏將講三種查找子物體方法: 查找固定路徑的某一個子物體的方法、通過名字深度查找某個子物體的方法、查找父物體下所有子物體的方

Unity實現控制物體以自定義的速度沿Y軸旋轉90度(也可自定義度數)後停止,然後返回原來位置

1、需要控制沿Y軸旋轉的物體,如下所示: 2、編寫控制該物體旋轉的指令碼,如下所示:  using UnityEngine; using System.Collections; public class Test_CycleRoate : MonoBehaviour {

Unity 的滑鼠事件方法彙總(物體,UGUI)

本文將從遊戲物體(Gameobject),和UGUI,講解Unity—PC端開發中,滑鼠事件的常見功能實現 本文將幫你解決Unity中如下或者類似的事件響應問題: 遊戲物體篇 點選遊戲物體,物體消失; 滑鼠懸停在遊戲物體上,物體旋轉; 移入遊戲物體,遊戲物體變

Unity移動物體的幾種常用方法

簡介:在unity3d中,有多種方式可以改變物體的座標,實現移動的目的,其本質是每幀修改物體的position。1. 通過Transform元件移動物體     Transform 元件用於描述物體在空間中的狀態,它包括 位置(position),

Unity學習筆記003.遞迴查詢物體/獲取物體元件

public static Transform FindChild(Transform parent,string name) { Transform child = null; child = parent.Find(name); if (child != null)

unity 沿著軸(x,y,z)物體

  using System.Collections; using System.Collections.Generic; using UnityEngine; //選擇軸向 public enum axisPostion {     x_dir, &nb

Unity遞迴思想 階乘 1 1 2 3 5 8 13 和遞迴尋找物體

遞迴的核心思想就是自己呼叫自己,只要能說出來,就能用程式碼寫出來   public int 階乘(int index)     {          &nbs