国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】

這篇具有很好參考價(jià)值的文章主要介紹了【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#


?????個(gè)人主頁(yè):@元宇宙-秩沅

????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?!

????? 本文由 秩沅 原創(chuàng)

????? 收錄于專欄unityUI專題篇
【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#


?通用API實(shí)現(xiàn)抽象行為封裝【五】?



??前言

【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#


???


??(A)常用關(guān)鍵API


【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#
【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#


??(B)需求分析


【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#
【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#


??(C)行為實(shí)現(xiàn)——武器拾取變成技能拾取


【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#

??????:步驟

  • 1.添加道具預(yù)制體(隨機(jī)生成武器)
  • 2.封裝道具基類
  • 3.封裝武器道具邏輯

【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#

1.封裝道具基類

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________項(xiàng)目:       ______________
//___________功能: 道具基類,提取道具相同點(diǎn)
//___________創(chuàng)建者:秩沅_______________
//_____________________________________
//-------------------------------------
public   class propsFather : MonoBehaviour
{
 
    public float RotateSpeed = 100;
    public GameObject Effect; //吃掉道具的特效

    private void Update()
    {
        transform.Rotate(Vector3.up * RotateSpeed * Time.deltaTime);    
    }

    public virtual  void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            GainEffect();
        }
    }

    //生成特效
    public void GainEffect()
    {
        GameObject effect = Instantiate(Effect, transform.position, transform.rotation); //實(shí)例化吃掉特效
        AudioSource effectAudio = effect.GetComponent<AudioSource>();
        effectAudio.enabled = MusicContol.SingleMusicContol.nowMusicData.soundSwitch;
        effectAudio.volume = MusicContol.SingleMusicContol.nowMusicData.soundRoll;
        gameObject.SetActive(false); //吃掉后讓其先失活
        Destroy(effect, 3);          //特效持續(xù)三秒后消失    
    }
  
}

【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#

封裝武器道具邏輯

using System.Collections;
using System.Collections.Generic;

using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________項(xiàng)目:       ______________
//___________功能: 武器道具的邏輯封裝
//___________創(chuàng)建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class props_Weapon : propsFather
{
  
    public GameObject [] weapons;
    private int index;


    private void Awake()
    {
        weapons = Resources.LoadAll<GameObject>(@"Prefabs/Weapon") ; //加載武器資源
    }


    public override void OnTriggerEnter(Collider other)
    {
        base.OnTriggerEnter(other);
        if (other.CompareTag("Player"))
        {
            if (weapons != null)
            {
                //隨機(jī)武器生成
                index = Random.Range(0, weapons.Length);
                GameObject NewWeapon = Instantiate(weapons[index]);
                //標(biāo)識(shí)武器的主人
                Weapon weaponScript = NewWeapon.GetComponent<Weapon>();
                weaponScript.Tank = other.gameObject;
                //拾取武器
                MainTank tankScript = other.gameObject.GetComponent<MainTank>();
                tankScript.ChangeWeapon(NewWeapon);
            }
        }
    }

 
  
}



??(D)行為實(shí)現(xiàn)——四個(gè)屬性道具一個(gè)腳本


【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#
【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#

【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#

巧妙地使用了枚舉,使得四個(gè)腳本變成一個(gè)腳本共同使用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________項(xiàng)目:       ______________
//___________功能: 加血道具邏輯封裝
//___________創(chuàng)建者:秩沅_______________
//_____________________________________
//-------------------------------------

    
public enum Type_Atrribute //枚舉類型的創(chuàng)建相當(dāng)于將四個(gè)屬性的腳本直接變成一個(gè)腳本
{
    blood,
    attack,
    defence,
    speed
}

public class props_Attribute : propsFather
{
    public Type_Atrribute atrribute = Type_Atrribute.blood ;  
    public int atk = 20;
    public int def = 20;
    public int Spe = 20;
    public int blo = 20;
   
    public override void OnTriggerEnter(Collider other)
    {
        base.OnTriggerEnter(other);

        if (other.CompareTag("Player"))
        {
            MainTank tankScript = other.gameObject.GetComponent<MainTank>();

            switch (atrribute)
            {             
                case Type_Atrribute.blood:         
                       tankScript.nowBlood += blo;
                    if (tankScript.nowBlood > tankScript.maxBlood)
                        tankScript.nowBlood = tankScript.maxBlood;
                    break;
                case Type_Atrribute.attack:
                    tankScript.attack += atk;
                    break;
                case Type_Atrribute.defence:
                    tankScript.defence += def;
                    break;
                case Type_Atrribute.speed:
                    tankScript.moveSpeed += Spe;
                    break;
                default:
                    break;
            }
         
        }
    }
   
}



??(E)行為實(shí)現(xiàn)——摧毀箱子爆出道具


【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#
【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】,# unity簡(jiǎn)單游戲demo制作,# UnityGUI篇,unity,游戲引擎,IMGUI,游戲,c#

箱子類相關(guān)封裝

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________項(xiàng)目:       ______________
//___________功能: 箱子銷毀相關(guān)邏輯封裝
//___________創(chuàng)建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class BoxTrigger : MonoBehaviour
{
    public int defence = 50;   //箱子的防御力
    public  GameObject effect;  //箱子銷毀特效
    private GameObject[] props;
    private int sufferAttack;
    private int PropChance;
    

    private void Start()
    {
        PropChance = Random.Range(1, 101);
        if (PropChance <= 70)
        {
            props = Resources.LoadAll<GameObject>(@"Prefabs/Props");
        }

    }
    private void OnTriggerEnter(Collider other)
    {
        if(other.CompareTag("bullet"))
        {
            BulletMove BulletSript = other.gameObject.GetComponent<BulletMove>();
            //如果子彈是玩家打來的則獲取子彈的攻擊力
            if(BulletSript.Tank.tag == "Player")
            {
                TankFather tankScript = BulletSript.Tank.GetComponent<TankFather>();
                sufferAttack = tankScript.attack;
                defence -= sufferAttack;   //防御力減少
                sufferAttack = 0;          //子彈的傷害是一次性的所以傷害歸0
                if (defence <= 0) RandomMakeProp();
            }
           
        }
    }

    //隨機(jī)生成道具
    public void RandomMakeProp()
    {
        int index;
        if (props != null)  //70%概率生成道具
        {
            index = Random.Range(0, props.Length);
            GameObject eff = Instantiate(effect, transform.position , transform.rotation);
            //音效同步
            AudioSource audioS = eff.GetComponent<AudioSource>();
            audioS.enabled  = MusicContol.SingleMusicContol.nowMusicData.soundSwitch;
            audioS.volume = MusicContol.SingleMusicContol.nowMusicData.soundRoll;

            Destroy(eff, 3);  //延時(shí)銷毀特效           
            GameObject prop = Instantiate(props[index], transform.position +new Vector3(0, 2, 0), transform.rotation);
            Destroy(gameObject);
        }
        else              //30%的概率直接銷毀
        {
            GameObject eff = Instantiate(effect, transform.position , transform.rotation);
            //音效同步
            AudioSource audioS = eff.GetComponent<AudioSource>();
            audioS.enabled = MusicContol.SingleMusicContol.nowMusicData.soundSwitch;
            audioS.volume = MusicContol.SingleMusicContol.nowMusicData.soundRoll;

            Destroy(eff, 3);  //延時(shí)銷毀特效
            Destroy(gameObject);           
        }
    }
}

總結(jié):

  • 枚舉在面向?qū)ο笾械拿钣?/li>

?相關(guān)文章?


?【2023unity游戲制作-mango的冒險(xiǎn)】-6.關(guān)卡設(shè)計(jì)

?【2023unity游戲制作-mango的冒險(xiǎn)】-5.攻擊系統(tǒng)的簡(jiǎn)單實(shí)現(xiàn)

?【2023unity游戲制作-mango的冒險(xiǎn)】-4.場(chǎng)景二的鏡頭和法球特效跟隨

?【2023unity游戲制作-mango的冒險(xiǎn)】-3.基礎(chǔ)動(dòng)作和動(dòng)畫API實(shí)現(xiàn)

?【2023unity游戲制作-mango的冒險(xiǎn)】-2.始畫面API制作

?【2023unity游戲制作-mango的冒險(xiǎn)】-1.場(chǎng)景搭建

?“狂飆”游戲制作—游戲分類圖鑒(網(wǎng)易游學(xué))

?本站最全-unity常用API大全(萬字詳解),不信你不收藏



你們的點(diǎn)贊?? 收藏? 留言?? 關(guān)注?是我持續(xù)創(chuàng)作,輸出優(yōu)質(zhì)內(nèi)容的最大動(dòng)力!文章來源地址http://www.zghlxwxcb.cn/news/detail-608546.html

到了這里,關(guān)于【unity之IMGUI實(shí)踐】通用API實(shí)現(xiàn)抽象行為封裝【五】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Unity之IMGUI腳本封裝】—編譯模式下控件可視化及其封裝

    【Unity之IMGUI腳本封裝】—編譯模式下控件可視化及其封裝

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :UnityUI篇實(shí)戰(zhàn) 缺點(diǎn)1:無法在編譯過程進(jìn)行可視化調(diào)整 缺點(diǎn)2:無法分辨率自適應(yīng) 此圖可忽略 UML類圖 性能優(yōu)化代碼 完整代碼: 按鈕封裝代

    2024年02月15日
    瀏覽(24)
  • 【Unity之IMGUI腳本封裝】—自定義常用控件的封裝(即拿即用)

    【Unity之IMGUI腳本封裝】—自定義常用控件的封裝(即拿即用)

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :UnityUI篇實(shí)戰(zhàn) UML類圖 封裝代碼: 按鈕封裝代碼 封裝代碼 UML類圖 封裝代碼 封裝代碼 封裝代碼 GUI.DrawTextrrue 沒有自定義樣式的重載 封裝代

    2024年02月16日
    瀏覽(44)
  • 【Unity之IMGUI腳本封裝】—位置信息類和控件基類的封裝

    【Unity之IMGUI腳本封裝】—位置信息類和控件基類的封裝

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : 缺點(diǎn)1:無法在編譯過程進(jìn)行可視化調(diào)整 缺點(diǎn)2:無法分辨率自適應(yīng) 作用:讓控件根據(jù)調(diào)整對(duì)齊 最終代碼 特點(diǎn): 類是抽象類:原因基類

    2024年02月17日
    瀏覽(21)
  • 【Unity之IMGUI】—編譯模式下控件可視化及其封裝

    【Unity之IMGUI】—編譯模式下控件可視化及其封裝

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :UnityUI篇實(shí)戰(zhàn) 缺點(diǎn)1:無法在編譯過程進(jìn)行可視化調(diào)整 缺點(diǎn)2:無法分辨率自適應(yīng) 此圖可忽略 UML類圖 性能優(yōu)化代碼 完整代碼: 按鈕封裝代

    2024年02月10日
    瀏覽(25)
  • 【Unity之IMGUI】—自定義常用控件的封裝(即拿即用)

    【Unity之IMGUI】—自定義常用控件的封裝(即拿即用)

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :UnityUI篇實(shí)戰(zhàn) UML類圖 封裝代碼: 按鈕封裝代碼 封裝代碼 UML類圖 封裝代碼 封裝代碼 封裝代碼 GUI.DrawTextrrue 沒有自定義樣式的重載 封裝代

    2024年02月11日
    瀏覽(17)
  • 【Unity之IMGUI】—位置信息類和控件基類的封裝

    【Unity之IMGUI】—位置信息類和控件基類的封裝

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : 缺點(diǎn)1:無法在編譯過程進(jìn)行可視化調(diào)整 缺點(diǎn)2:無法分辨率自適應(yīng) 作用:讓控件根據(jù)調(diào)整對(duì)齊 最終代碼 特點(diǎn): 類是抽象類:原因基類

    2024年02月12日
    瀏覽(26)
  • 【unity之IMGUI實(shí)踐】單例模式管理數(shù)據(jù)存儲(chǔ)【二】

    【unity之IMGUI實(shí)踐】單例模式管理數(shù)據(jù)存儲(chǔ)【二】

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : unityUI專題篇 ??? ??????:步驟實(shí)現(xiàn) 1.首先將音樂數(shù)據(jù)封裝在類中,不采用單例模式 2. 而后封裝一個(gè)游戲數(shù)據(jù)類為單例模式:功能

    2024年02月16日
    瀏覽(26)
  • 【unity之IMGUI實(shí)踐】單例模式管理面板對(duì)象【一】

    【unity之IMGUI實(shí)踐】單例模式管理面板對(duì)象【一】

    ?????個(gè)人主頁(yè) :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : unityUI專題篇 ??? API:簡(jiǎn)單的旋轉(zhuǎn) 解析: 1.采用單例模式,原因: 單例模式無法被纂改基類,適合當(dāng)管理者 2.基類提取了子類所有的共

    2024年02月15日
    瀏覽(28)
  • ThinkPHP 通用的API格式封裝

    ThinkPHP 通用的API格式封裝

    在BaseController中重寫__call方法,當(dāng)調(diào)用不存在的方法時(shí),就會(huì)調(diào)用__call方法,會(huì)傳入請(qǐng)求方法和參數(shù) 在控制器下面新建Error控制器,然后添加__call方法,這樣就會(huì)調(diào)用不存在的控制器的時(shí)候會(huì)調(diào)用__call方法,會(huì)傳入請(qǐng)求的控制器名稱和參數(shù) 測(cè)試 假定一個(gè)成功的請(qǐng)求,測(cè)試一下

    2024年02月10日
    瀏覽(20)
  • 鴻蒙API9+axios封裝一個(gè)通用工具類

    鴻蒙API9+axios封裝一個(gè)通用工具類

    使用方式: 打開Harmony第三方工具倉(cāng),找到axios,如圖: 第三方工具倉(cāng)網(wǎng)址:https://ohpm.openharmony.cn/#/cn/home 在你的項(xiàng)目執(zhí)行命令:ohpm install @ohos/axios 前提是你已經(jīng)裝好了ohpm ,如果沒有安裝,可以在官網(wǎng)找到詳細(xì)的安裝教程; 注意:不是在你的entry目錄下,比如你的項(xiàng)目名稱:

    2024年04月17日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包