欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity3D使用UGUI開發(fā)原生虛擬搖桿

 更新時間:2020年04月15日 09:56:56   作者:即步  
這篇文章主要為大家詳細(xì)介紹了Unity3D使用UGUI開發(fā)原生虛擬搖桿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

在Unity3d中開發(fā)虛擬搖桿方式有比較多,可以使用EasyTouch、FairyGUI等插件來開發(fā)。本文給大家介紹使用Unity3d的原生UGUI來開發(fā)出自己的虛擬搖桿,這樣可以減少游戲資源包的大小。

先展示下效果圖:

現(xiàn)在開發(fā)我們的開發(fā)

創(chuàng)建一個Image1,并且在Image1創(chuàng)建一個子對象Image2

在Image1中掛載一個自定義腳本,這里我命名為Joystick

腳本代碼如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
 
public class Joystick : ScrollRect
{
 private float mRadius;
 public System.Action<RectTransform> JoystickMoveHandle;
 public System.Action<RectTransform> JoystickEndHandle;
 
 protected override void Start()
 {
  mRadius = this.GetComponent<RectTransform>().sizeDelta.x * 0.5f;
  this.content.gameObject.SetActive(false);
 }
 
 
 public override void OnDrag(PointerEventData eventData)
 { 
  base.OnDrag(eventData);
  this.content.gameObject.SetActive(true);
 
  //虛擬搖桿移動
  var contentPostion = this.content.anchoredPosition;  
  if (contentPostion.magnitude > mRadius)
  {
   contentPostion = contentPostion.normalized * mRadius;
   SetContentAnchoredPosition(contentPostion);
  }
  //旋轉(zhuǎn)
  if (content.anchoredPosition.y != 0)
  {
   content.eulerAngles = new Vector3(0, 0, Vector3.Angle(Vector3.right, content.anchoredPosition) * content.anchoredPosition.y / Mathf.Abs(content.anchoredPosition.y) - 90);
  }
 
 }
 
 private void FixedUpdate()
 {
  if (this.content.gameObject.activeInHierarchy)
  {
   if (JoystickMoveHandle != null)
   {
    JoystickMoveHandle(this.content);
   }
  }
 }
 
 public override void OnEndDrag(PointerEventData eventData)
 {
  base.OnEndDrag(eventData);
 
  this.content.gameObject.SetActive(false);
 
  if (JoystickEndHandle != null)
  {
   JoystickEndHandle(this.content);
  }
 }
}

然后將Image2拖動到content屬性變量里

這樣就可以移動并且拖動我們的虛擬搖桿了

接下來要讓我們的游戲主角跟隨我們的搖桿移動而移動

在我們的主角兒掛載一個自定義腳本

在Start方法里添加代碼:

mJoystick = GameObject.Find("Joystick").GetComponent<Joystick>();
  mJoystick.JoystickMoveHandle = JoystickHandle;
  mJoystick.JoystickEndHandle = JoystickEndHandle;

其中JoystickHandle方法代碼為:

transform.eulerAngles = new Vector3(0, -content.eulerAngles.z, 0);
 transform.Translate(Vector3.forward * Time.deltaTime * mMoveSpeed);

接下來就可以運行我們的游戲,觀察主角移動旋轉(zhuǎn)位置。

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

相關(guān)文章

  • C#在Winform開發(fā)中使用Grid++報表

    C#在Winform開發(fā)中使用Grid++報表

    這篇文章主要介紹了C#在Winform開發(fā)中使用Grid++報表,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • visio二次開發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號*)

    visio二次開發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號*)

    最近做一個故障樹診斷的項目,用visio二次開發(fā),可以同時打開多個繪制的故障樹圖形文檔。項目中需要實現(xiàn)判斷文檔是否發(fā)生變化,這是很多編輯軟件的基本功能,變化了就加個星號*
    2013-04-04
  • 解析C#彩色圖像灰度化算法的實現(xiàn)代碼詳解

    解析C#彩色圖像灰度化算法的實現(xiàn)代碼詳解

    本篇文章是對C#中彩色圖像灰度化算法的實現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#中設(shè)計、使用Fluent API

    C#中設(shè)計、使用Fluent API

    這篇文章主要介紹了C#中設(shè)計、使用Fluent API,本文講解了最簡單且最實用的設(shè)計、設(shè)計具有調(diào)用順序的Fluent API、泛型類的Fluent設(shè)計等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • C#使用ScrapySharp實現(xiàn)多線程下載操作

    C#使用ScrapySharp實現(xiàn)多線程下載操作

    在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用中,數(shù)據(jù)抓取是一個常見的需求,無論是為了數(shù)據(jù)分析、內(nèi)容聚合還是自動化測試,ScrapySharp 是一個基于 .NET 的輕量級、高性能的網(wǎng)頁抓取庫,本文將探討如何在 C# 中使用 ScrapySharp 實現(xiàn)多線程下載策略,需要的朋友可以參考下
    2024-08-08
  • c#創(chuàng)建圓形類Circle、矩形類實現(xiàn)代碼

    c#創(chuàng)建圓形類Circle、矩形類實現(xiàn)代碼

    這篇文章主要介紹了c#創(chuàng)建圓形類Circle實現(xiàn)代碼,其中包括set,get方法,需要的朋友可以參考下
    2020-11-11
  • C#中接口(interface)的理解

    C#中接口(interface)的理解

    C#中接口(interface)的理解...
    2007-03-03
  • C#?設(shè)置Chart的X軸為時間軸???????詳情

    C#?設(shè)置Chart的X軸為時間軸???????詳情

    這篇文章主要介紹了C#設(shè)置Chart的X軸為時間軸???????詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 基于C#實現(xiàn)自定義計算的Excel數(shù)據(jù)透視表

    基于C#實現(xiàn)自定義計算的Excel數(shù)據(jù)透視表

    數(shù)據(jù)透視表(Pivot?Table)是一種數(shù)據(jù)分析工具,通常用于對大量數(shù)據(jù)進(jìn)行匯總、分析和展示,本文主要介紹了C#實現(xiàn)自定義計算的Excel數(shù)據(jù)透視表的相關(guān)知識,感興趣的可以了解下
    2023-12-12
  • C# 設(shè)計模式系列教程-簡單工廠模式

    C# 設(shè)計模式系列教程-簡單工廠模式

    簡單工廠模式職責(zé)單一,實現(xiàn)簡單,且實現(xiàn)了客戶端代碼與具體實現(xiàn)的解耦。
    2016-06-06

最新評論