最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity搖桿制作的方法

 更新時(shí)間:2021年08月11日 10:47:55   作者:_不動明王  
這篇文章主要為大家詳細(xì)介紹了Unity搖桿制作的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Unity搖桿制作方法的具體代碼,供大家參考,具體內(nèi)容如下

一.UI制作

1.首先創(chuàng)建一個(gè)空物體,命名為搖桿,錨點(diǎn)調(diào)至左下角

2.創(chuàng)建一個(gè)image作為搖桿廚盆的有效地方,并命名為tough_place

3.創(chuàng)建一個(gè)image放入搖桿的背景圖片,并命名為bg。

4.創(chuàng)建一個(gè)image放入搖桿的控制點(diǎn),并命名為point。

5.把tough_place的顏色設(shè)置為透明

二.代碼編寫

創(chuàng)建腳本命名為PEListener,并引入相關(guān)接口,并進(jìn)行封裝。

using System;
using UnityEngine;
using UnityEngine.EventSystems;

public class PEListener : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
{
    public Action<PointerEventData> onClickDown;//鼠標(biāo)按下時(shí)觸發(fā)的事件
    public Action<PointerEventData> onClickUp;//鼠標(biāo)抬起時(shí)觸發(fā)的事件
    public Action<PointerEventData> onClickDrag;//鼠標(biāo)按下時(shí)觸發(fā)的事件
    public void OnPointerDown(PointerEventData eventData)
    {
        if (onClickDown != null)
        {
            onClickDown(eventData);
        }
    }
    public void OnPointerUp(PointerEventData eventData)
    {
        if (onClickUp != null)
        {
            onClickUp(eventData);
        }
    }
   
    public void OnDrag(PointerEventData eventData)
    {
        if (onClickDrag!=null)
        {
            onClickDrag(eventData);
        }
    }
  
}

創(chuàng)建腳本命名為Test,進(jìn)行相關(guān)的邏輯操作。

(1)定義相關(guān)數(shù)據(jù)并傳入

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class Test : MonoBehaviour {

    //輪盤UI
    public Image imageTough;//輪盤觸摸區(qū)域
    public Image imgDir;//輪盤背景
    public Image imaPoint;//輪盤操作點(diǎn)


    
    //輪盤相關(guān)數(shù)據(jù)
    Vector2 startPos;//輪盤按下的坐標(biāo)
    Vector2 defulPos;//輪盤按下的坐標(biāo)
    float poinDis=90;// 輪盤中心和邊緣的最大距離(數(shù)據(jù)自己測試)


   private void Start()
    {
        defulPos = imageTough.transform.position;

        //由于我們的Canvas選擇的是Scale with Screen Size,且Match為1,也就是UI縮放受高度影響到大,具體數(shù)據(jù)見下圖
        //poinDis實(shí)際大小=poinDis *縮放
        poinDis = Screen.height * 1.0f / 1334 * poinDis;
    }
}

(2)進(jìn)行相關(guān)邏輯的書寫

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class Test : MonoBehaviour {

    //輪盤UI
    public Image imageTough;//輪盤觸摸區(qū)域
    public Image imgDir;//輪盤背景
    public Image imaPoint;//輪盤操作點(diǎn)


    
    //輪盤相關(guān)數(shù)據(jù)
    Vector2 startPos;//輪盤按下的坐標(biāo)
    Vector2 defulPos;//輪盤按下的坐標(biāo)
    float poinDis=90;// 輪盤中心和邊緣的最大距離(數(shù)據(jù)自己測試)


    private void Start()
    {
        defulPos = imageTough.transform.position;

        //由于我們的Canvas選擇的是Scale with Screen Size,且Match為1,也就是UI縮放受高度影響到大,具體數(shù)據(jù)見下圖
        //poinDis實(shí)際大小=poinDis *縮放
        poinDis = Screen.height * 1.0f / 1334 * poinDis;


        RegisterTouchEvts();
    }


    public void RegisterTouchEvts()
    {
        PEListener lister = imageTough.gameObject.AddComponent<PEListener>();

        lister.onClickDown = (PointerEventData evt) =>
        {
            //鼠標(biāo)按下時(shí)設(shè)置輪盤背景位置
            startPos = evt.position;
            imgDir.transform.position = evt.position;

        };

        lister.onClickUp = (PointerEventData evt) =>
        {
            //鼠標(biāo)抬起時(shí)設(shè)置輪盤背景位置和輪盤操作點(diǎn)為默認(rèn)位置
            
            imgDir.transform.position = defulPos;
            imaPoint.transform.localPosition = Vector2.zero;

        };

        lister.onClickDrag = (PointerEventData evt) =>
        {

            //計(jì)算是否超過輪盤中心和邊緣的最大距離
            Vector2 dir = evt.position - startPos;
            float len = dir.magnitude;

            //超過了,限制為最大位置
            if (len > poinDis)
            {
                Vector2 clampDir = Vector2.ClampMagnitude(dir, poinDis);
                imaPoint.transform.position = startPos + clampDir;
            }
            else
            {
                imaPoint.transform.position = evt.position;
            }
        };
    }

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C# 實(shí)現(xiàn)Trim方法去除字符串前后的所有空格

    C# 實(shí)現(xiàn)Trim方法去除字符串前后的所有空格

    這篇文章主要介紹了C# 實(shí)現(xiàn)Trim方法去除字符串前后的所有空格,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C# WPF自制白板工具

    C# WPF自制白板工具

    著電子屏幕技術(shù)的發(fā)展,普通的黑板已不再適用現(xiàn)在的教學(xué)和演示環(huán)境,電子白板應(yīng)運(yùn)而生,本文將通過C# WPF自制一個(gè)白板工具,感興趣的可以了解下
    2024-11-11
  • 詳解Winform里面的緩存使用

    詳解Winform里面的緩存使用

    這篇文章主要介紹了Winform里面的緩存使用,有需要的朋友可以參考一下
    2014-01-01
  • 詳解C#中經(jīng)典內(nèi)存泄露場景的寫法

    詳解C#中經(jīng)典內(nèi)存泄露場景的寫法

    內(nèi)存泄漏是指程序中的內(nèi)存分配無法正確釋放,導(dǎo)致程序持續(xù)占用內(nèi)存而不釋放,最終可能導(dǎo)致系統(tǒng)資源不足的問題,下面我們就來看看C#中C#中經(jīng)典內(nèi)存泄露場景的寫法以及如何避免吧
    2024-03-03
  • C#開發(fā)Windows UWP系列之對話框MessageDialog和ContentDialog

    C#開發(fā)Windows UWP系列之對話框MessageDialog和ContentDialog

    這篇文章介紹了C#開發(fā)Windows UWP系列之對話框MessageDialog和ContentDialog,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#實(shí)現(xiàn)清空回收站的方法

    C#實(shí)現(xiàn)清空回收站的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)清空回收站的方法,涉及C#系統(tǒng)回收站的清空技巧,非常簡單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#中的協(xié)變與逆變方式

    C#中的協(xié)變與逆變方式

    協(xié)變和逆變是C#中處理泛型類型參數(shù)可變性的兩個(gè)重要概念,協(xié)變允許將派生類型的泛型參數(shù)轉(zhuǎn)換為基類型的泛型參數(shù),而逆變允許將基類型的泛型參數(shù)轉(zhuǎn)換為派生類型的泛型參數(shù),通過協(xié)變和逆變,可以提高代碼的靈活性和可重用性,但也需要注意類型參數(shù)的限制和安全性
    2024-12-12
  • C# winForm實(shí)現(xiàn)的氣泡提示窗口功能示例

    C# winForm實(shí)現(xiàn)的氣泡提示窗口功能示例

    這篇文章主要介紹了C# winForm實(shí)現(xiàn)的氣泡提示窗口功能,涉及C# winForm窗口屬性與設(shè)置相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • C#匿名委托與Lambda表達(dá)式詳解

    C#匿名委托與Lambda表達(dá)式詳解

    這篇文章主要為大家詳細(xì)介紹了C#匿名委托與Lambda表達(dá)式的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C# BackgroundWorker組件學(xué)習(xí)入門介紹

    C# BackgroundWorker組件學(xué)習(xí)入門介紹

    一個(gè)程序中需要進(jìn)行大量的運(yùn)算,并且需要在運(yùn)算過程中支持用戶一定的交互,為了獲得更好的用戶體驗(yàn),使用BackgroundWorker來完成這一功能
    2013-10-10

最新評論

乐东| 壤塘县| 揭西县| 边坝县| 手游| 同江市| 宣化县| 潼关县| 孟村| 汉沽区| 高碑店市| 信阳市| 监利县| 湘潭市| 芦溪县| 桦川县| 什邡市| 临邑县| 牡丹江市| 克什克腾旗| 香格里拉县| 昌吉市| 萨迦县| 五原县| 夹江县| 库车县| 海晏县| 邹平县| 荥经县| 呼伦贝尔市| 祥云县| 准格尔旗| 海伦市| 永善县| 汶上县| 革吉县| 师宗县| 大同县| 张家港市| 日土县| 资阳市|