主頁 > 軟體設計 > Unity零基礎到進階 ??| 近萬字教程 對 Unity 中的 影片系統基礎 全面決議+實戰演練,你確定要錯過嗎?

Unity零基礎到進階 ??| 近萬字教程 對 Unity 中的 影片系統基礎 全面決議+實戰演練,你確定要錯過嗎?

2021-06-15 07:39:52 軟體設計

  • 📢博客主頁:https://blog.csdn.net/zhangay1998
  • 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
  • 📢本文由 God Y.原創,首發于 CSDN🙉
  • 📢未來很長,值得我們全力奔赴更美好美好的生活?

目錄

        • 📢前言
    • 🎄Unity影片基礎知識
    • 🎁Animation影片組件
      • ??Animation組件屬性:
      • 🧡Animation實戰演練:簡單模仿坦克開炮影片制作
      • 💛腳本代碼控制影片API
    • 🔔Animator影片組件
      • 💚影片作業流程
      • 💙屬性介紹
        • Animator組件屬性:
        • Controller 的屬性:
        • Animator Controller視圖:
        • Animation States影片狀態:
        • Animation Transitions(影片過渡)
        • Animation Parameters(影片引數)
        • Animation Layers(影片層)
        • Blend Tree(融合樹)
      • 💜Animator類介紹
      • 💞影片操作步驟
      • 💕Animator實戰演練:實作人物行走,攻擊影片切換
  • 👥總結


📢前言

  • 本篇文章將對Unity中的影片系統做一個基礎的介紹
  • 包括AnimationAnimator的基礎屬性知識和實戰演練來學習Unity中的影片系統
  • 影片在游戲中的地位尤為重要,模型影片一般是成套的,可以有專門的建模師對游戲模型進行設計,然后加上一系列的影片進行模型動作設計~

就拿王者榮耀舉例來說,在英雄單獨介紹的界面,每次點開一個英雄都會有一個英雄出場影片,大家都知道傳說皮膚榮耀典藏的出場影片都特別炫酷,那這就是一個典型的影片了,

還有在游戲中英雄的待機影片移動影片普攻釋放技能等等,都是通過呼叫播放不同的影片來實作的

設計師們通過對每個人物骨骼的特點設計出不一樣風格的影片效果,能讓人眼前一亮,讓每個英雄的動作都有自己的標志性,這就是一個極好的作品啦!

一般來說每個模型都有一系列獨有的影片系列,具有相同骨骼型別的模型還能共用一套影片!
在游戲中,有些英雄的攻擊模式比較相似,設計師們就可以偷懶讓他們共用一個系列的影片啦~

那我們這次就來一起學習一下Unity中的影片系統吧!
在這里插入圖片描述


🎄Unity影片基礎知識

  • 在介紹Unity影片之前,先來科普一下基礎知識
  • 大家都知道在Unity中有很多的游戲物件,所謂游戲物件就是場景中存在的一些個物體
  • 模型呢在Unity中算是一個特殊的游戲物體
  • 專門做模型的軟體也有挺多,較出名的類似3DMAXMaya等等

  • 模型的格式有很多種,比如 *.max、*.fbx、*.obj等等格式

  • Unity中常用的模型格式就是后綴為 .fbx 的檔案了

  • Unity中的影片系統有兩個,一個是Animation,另一個是Animator

  • Legacy影片系統使用的是Animation組件,直接對影片片段進行操作

  • Mecanim影片系統使用的是Animator組件,是對各影片片段之間的切換進行控制,

  • 相對于老版Animation,新版的Animator加入了影片狀態機和骨骼Avatar,

常用類介紹:

  • Animator:影片控制器,控制Mecanim影片系統的介面,用來管理多個影片;
  • Animation:用于播放影片,老版中單獨的一個Animation也可以完成影片的播放和切換,不過狀態切換之類的需要程式猿代碼控制,在新版中,狀態管理部分交給了Animator;
  • AnimationClip:影片剪輯片段,儲存基于關鍵幀的影片,是用于Animation來播放影片;
  • AnimationState:影片狀態,用來改變單一影片的播放速度、權重、時間、層級、播放Mode,以及混合模式;
  • AnimationEvent:影片事件,用于某種條件下觸發自定義函式;
  • StateMachineBehaviour: 影片狀態機管理器拓展類,腳本繼承了該類之后,系結到Animator上某State上面,當狀態發生變化,可以多載回應函式,類似 觸發器的回應函式;

下圖就是我匯入的一個后綴為 .fbx 的模型,可以看到該模型子級目錄中還有挺多東西,那就是他的結構組成啦~還有網格渲染和一個骨骼
在這里插入圖片描述

  • 然后順帶介紹一下模型的Rig視窗屬性,其他幾個視窗的屬性說實話,我現在還沒自己改過,
  • 因為沒有用過,個人感覺對程式開發專案來說沒有那么重要,所以在這里就不誤人子弟了…

在這里插入圖片描述
有的模型還帶有影片,類似下面這種
在這里插入圖片描述
點擊右邊的播放按鈕可以查看影片效果~
在這里插入圖片描述


🎁Animation影片組件

  • 上面提到了AnimationLegacy影片系統使用的

  • 由于Animation算是老版的影片系統,所以這里我們就簡單介紹一下,然后做一個簡單實體,更多的介紹留給新人——Animator

  • unity的老版本中我們只有Animation組件,在4.6版本以后則增添了Animator組件

  • Animation:用于播放影片,老版中單獨的一個Animation也可以完成影片的播放和切換,不過狀態切換之類的需要程式猿代碼控制,在新版中,狀態管理部分交給了Animator

??Animation組件屬性:

在這里插入圖片描述
在這里插入圖片描述


🧡Animation實戰演練:簡單模仿坦克開炮影片制作

  • 我們這里用一個簡單的實體來說一下Animation的簡單用法
  • 還是這個坦克模型,我要給他做一個簡單的開炮影片

在這里插入圖片描述

  • 這里我們選中這個坦克模型,按照以下圖示三步操作
  • 選中游戲物件,打開Animation編輯視窗

在這里插入圖片描述

  • 然后進入這個畫面,點Create創建影片,然后選擇一個存放的地址,在Assets目錄下單獨新建一個管理影片檔案夾就行~

在這里插入圖片描述
在這里插入圖片描述

  • 因為我這里想要的效果是讓坦克的炮筒(GameObject)前后移動,做成一個簡單的開炮影片
  • 所以我這里選擇坦克的炮筒控制它的坐標位置前后變化來作為一個開炮影片
  • 那這一步的目的就是控制GameObjectPosition位置,按一下圖示做就行

在這里插入圖片描述

  • 上述步驟完成后然后就是以下圖片所示模樣:

在這里插入圖片描述

  • 雙擊圖示紅色框部分可以新建一個關鍵幀,中間三個就是我新建的關鍵幀,這個關鍵幀可以左右拖動,代表關鍵幀執行的時間節點

  • 有小伙伴可能想問這個關鍵幀有什么用呢,請接著往下看,就知道它的作用了!

在這里插入圖片描述

  • 然后我們把這五個關鍵幀的Position.z分別設定成:0,1,0,-1,0

  • 將圖中那條白色豎線左右拖到關鍵幀上設定Position.z的屬性即可,輸完數值別忘了點回車,確認數值已經輸上!

在這里插入圖片描述

  • 然后有的小伙伴又要問了,這幾個數值有啥用呀,非要這樣設定嘛?
  • 廢話不多說,先來看一下這樣設定出來的效果圖吧

在這里插入圖片描述

  • 雖然效果有點陋~但是勉強能達到我想要的一個開炮使得炮筒移動的效果,
  • 我們上面的影片設定的五個關鍵幀,分別是Position.z的值為:0,1,0,-1,0
  1. 第一個關鍵幀Position.z的值設定為0,默認值我們沒改動
  2. 第二個關鍵幀將Position.z的值設定為1,讓炮筒向前移動一米
  3. 第三個關鍵幀將Position.z的值設定為0,讓炮筒復位
  4. 第四個關鍵幀將Position.z的值設定為-1,讓炮筒向后移動一米
  5. 第五個關鍵幀將Position.z的值設定為0,讓炮筒再復位
  • 這樣就達成了上圖中的效果,炮筒前后移動一米,然后初末位置相同,形成一個簡單的無縫回圈動作,就達成我們的目的啦~

  • 關鍵幀就是在一個我們指定的時間,將設定的影片屬性修改成我們設定的值

  • 上面五個關鍵幀,相當于五個時間節點,在每個時間節點都設定好了他們應該執行的屬性

  • 然后將這個檔案拖到Animation的組件上在腳本中呼叫執行影片的代碼就可以啦
    在這里插入圖片描述


💛腳本代碼控制影片API

  • 上面的步驟設定完成之后,就可以在想使用影片的地方呼叫啦~
  • 下面是簡單的影片播放停止的呼叫方法
  • Play(“TankAnimation1” );,播放影片,傳入引數為影片名字

  • Stop(“TankAnimation1”) ,停止影片,傳入引數為影片名字

  • CrossFade(“TankAnimation1”, 0.5f); ,有過度的切換影片,傳入引數(影片名字,過度時間)


🔔Animator影片組件

  • Animator是4.6版本以后出現的,Animator是影片控制器,控制Mecanim影片系統的介面,用來管理多個影片;
  • Mecanim影片系統就是Animator

在這里插入圖片描述

💚影片作業流程

  • Unity影片系統是基于影片剪輯的概念,其中包含了特定物件如何隨著時間改變其位置、旋轉或其他屬性的資訊,
  • 每個片段都可以看作是一個單一的線性錄音,
  • 來自外部來源的影片剪輯是由藝術家或影片師與第三方工具,如Max或Maya,或來自動作捕捉作業室或其他來源,
  • 然后,影片剪輯被組織成一個被稱為Animator Controller的類似于流程圖的結構化系統,
  • Animator控制器充當一個“狀態機”,跟蹤當前播放的剪輯,以及影片何時應該改變或混合在一起,
  • 通俗來說就是就是通過Animator組件去控制Animator Controller中的影片切換,來達到我們想要的模型執行各種動作,

💙屬性介紹

Animator組件屬性:

在這里插入圖片描述

  • Controller :影片控制器(影片狀態機)

  • Avatar: ?骼

  • Apply Root Motion: 應?根動作

  • Update Mode:影片的更新模式,
    Normal:同步更新,影片速度與運行速度相匹配,運行速度慢,影片慢,
    Animate Physics:影片是有物理的相互作用時,用此模式,
    Unscaled Time:不成比例的時間,影片忽略當前的運行速度,

  • Culling Mode:影片的裁剪模式,
    Always Animate:總是啟用影片,不進行裁剪,
    Cull Update Transforms:更新裁切,
    Cull Completely:完全裁切,

其中骨骼根動作這里不做研究,因為一般是建模師負責,我們用的時候不多
Controller 就要仔細研究一下了,因為他就是導致Animator強大的一個原因!

Controller 的屬性:

在這里插入圖片描述

  • Controller 新建方法:Creat -> Animator Controller

在這里插入圖片描述

Animator Controller視圖:

在這里插入圖片描述

  • 可以在這個面板右鍵創建一個Empty,新建的第一個成為默認影片狀態!

  • 也可以直接將影片從Project面板拖動到這個Animator Controller視圖中~

在這里插入圖片描述

Animation States影片狀態:

點擊這個State可以查看(Animation States)影片狀態:
在這里插入圖片描述

  • Motion :當前狀態下的影片片段
  • Speed :影片的默認速度
  • Mirror :鏡像
  • Foot IK :是否使用Foot IK
  • 是否使用Foot IK :是否對沒有影片的屬性寫回默認值
  • Transitions :由當前狀態出發的過渡條件串列

黃色顯示的狀態為默認狀態,指狀態機首次激活時所進入的狀態,可以在其他狀態上右擊選擇Set as Layer Default State命令改變默任狀態,

Animation Transitions(影片過渡)

在某一影片狀態右擊后選擇Make Transition,然后選擇過渡到的下一影片狀態,即可建立過渡聯系,
在這里插入圖片描述

  • 就是點擊影片之間的小箭頭這個

在這里插入圖片描述
在這里插入圖片描述

  • Has Exit Time :有退出時間,上一個影片播放完畢才能執行過渡影片,
  • Setting:設定
  • Exit Time:退出時間
  • Fixed Duration:固定持續時間
  • Transfition Duratio:過渡持續時間
  • Transition Offset:過渡偏移
  • Interruption Source:中斷源
  • Ordered Interuption:有序中斷

Animation Parameters(影片引數)

在這里插入圖片描述
引數值的四種基本型別:

  • Float:浮點數
  • Int:整數
  • Bool:回傳布林值,通過復選框來選擇True或者False
  • Trigger:觸發一個布林值,復位控制器時消耗一個轉變,由一個圓按鈕表示,

Animation Layers(影片層)

  • 實作同一時刻進行多種影片狀態播放,

在這里插入圖片描述

Blend Tree(融合樹)

對兩個或更多個相似的運動進行混合
在這里插入圖片描述

制作:在視圖右擊空白處后選擇Create State -> From New Blend Tree,雙擊進入,
實體:
在這里插入圖片描述
在這里插入圖片描述
Blend Type(混合型別)

  • 1D混合:通過唯一的一個引數來控制子影片的混合,
  • 2D Simple Directional(2D簡單定向模式)適用于所有影片都具有一定的運動方向、其中任何兩段影片的運動方向都不相同的情形,
  • 2D Freeform Directional(2D自由定向模式)適用于所有影片都具有一定的運動方向,但同一方向上可以存在多段影片,
  • 2D Free Cartesian(2D自由笛卡爾模式)適用于影片不具有確定運動確定運動方向的情形,
    Direct:直接,讓用戶直接控制每個節點的權重,

該內容部分知識參考文章 https://blog.csdn.net/NCZ9_/article/details/84639900


💜Animator類介紹

先來介紹下Animator的常用類,后面實戰演練會用得到
在這里插入圖片描述

💞影片操作步驟

以下是一個實施影片的具體操作步驟
在這里插入圖片描述

  • 1、配置好?骼

  • 2、裁剪好影片?段

  • 3、創建影片控制器 AnimatorController

    • 添加影片?段
    • 設定默認的影片狀態是哪個
    • 設定影片與影片之間的過渡關系
    • 添加影片引數
    • 設定影片過渡條件
  • 4、通過代碼調整影片引數,從?達成過渡條件,實作影片切換


💕Animator實戰演練:實作人物行走,攻擊影片切換

  • 下面我們開始進行Animator實體介紹:實作人物行走,攻擊影片切換
  • 這個實體就不需要我們自己設計影片了(不是科班出身,設計的影片還丑,怕你們吐槽~)
  • 我們只需要將現成的影片使用腳本控制來實作目的!

開始操作

  • 首先我們新建一個場景,匯入一個模型站立的小貓咪,如下圖:

在這里插入圖片描述

  • 因為我匯入的這個小貓咪的模型自帶幾種影片,所以我這里就不需要自己制作模型影片啦~
  • 一般也都是這樣,我們只需要將這個影片在Animator Controller進行設計就好啦!

在這里插入圖片描述

  • 在小貓咪模型身上添加一個Animator組件:Add Component -> Animator
    在這里插入圖片描述

新建一個Animator Controller,上面已經講過了,這里再發一次~
并將這個Controller拖到Animator組件中~
在這里插入圖片描述
在這里插入圖片描述

  • 雙擊打開Controller后,直接將影片從Project面板將影片片段拖動到這個Animator面板中即可

  • 然后將他們之間的影片過渡關系設定好

  • 如下圖中,Aert為待機影片,Move為移動影片,ATK3為攻擊影片

  • 左邊是Animation Parameters(影片引數),上面提到過~
    CanMove是一個Bool值,用來控制執行移動影片
    Attack是一個Trigger值,用來控制執行攻擊影片
    MovePlayerSpeed是一個Float值,用來控制移動影片的播放速度

在這里插入圖片描述

  • 這里有需要注意的一個點,點擊Move狀態,然后將MovePlayerSpeed添加上,因為我們待會要通過這個改變移動影片的播放速度
    在這里插入圖片描述

待機影片向移動影片過渡設定:

  • 點擊下圖中左邊待機影片向移動影片過渡的箭頭,在右邊有個小加號,將我們的影片引數CanMove加上,選擇True
    在這里插入圖片描述
    -反過來則是CanMove加上,但是數值變為False
    在這里插入圖片描述

待機影片向攻擊影片過渡:

  • 點擊左邊影片 Aert -> ATK3 的箭頭,然后點擊右邊的小加號,將Attack添加上
    在這里插入圖片描述

移動影片向攻擊影片過渡:

  • 點擊左邊影片 Move-> ATK3 的箭頭,然后點擊右邊的小加號,將Attack添加上
    在這里插入圖片描述

  • 但是到這里有的小伙伴可能就有些疑惑,為什么影片引數一個用Bool,一個用Trigger,還有一個用Float呢?

  • 這個呢,是根據具體情況而定的

  • 因為移動影片,使我們按下某個鍵后就一直執行的,所以用Bool值來進行移動的判定

  • 但是攻擊影片呢,是你按下去一次就執行一次,顯然Trigger更適合攻擊影片

  • 使用float值呢是為了改變影片的播放速度,顯然是一個數值,使用float是最好的選擇啦!

這樣的話在Unity視圖方面就設定完成了,接下來就是寫代碼控制影片的播放
直接上代碼掛在我們的小貓咪身上就行啦!

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

public class CatAnimation : MonoBehaviour
{
    [Header("移動速度")]
    public float MoveSpeed = 1f;
    [Header("旋轉速度")]
    public float TurnSpeed = 5f;
    
    private Animator ani;
    private  float hor, ver;
    private void Awake()
    {
        ani = GetComponent<Animator>();
    }
    private void Update()
    {
        hor = Input.GetAxis("Horizontal");
        ver = Input.GetAxis("Vertical");
        if (hor !=0 || ver !=0)
        {
            ani.SetBool("CanMove",true);
        }
        else
        {
            ani.SetBool("CanMove",false);
        }
        //判斷當前角色是否正在播放移動影片
        if (ani.GetCurrentAnimatorStateInfo(0).IsName("Move"))
        {
            //宣告一個臨時播放速度
            float sp = 0;

            if (ver >= 0)
            {
                if (Input.GetKey(KeyCode.LeftShift))
                {
                    sp = 2;
                }
                else
                {
                    sp = 1;
                }
            }
            else
            {
                if (Input.GetKey(KeyCode.LeftShift))
                {
                    sp = -2;
                }
                else
                {
                    sp = -1;
                }
            }
            //前后移動
            transform.position += ver* transform.forward * Time.deltaTime * MoveSpeed;
            ani.SetFloat("MovePlaySpeed",sp);
            transform.eulerAngles += transform.up * TurnSpeed * hor;
        }
        if (Input .GetKeyDown(KeyCode.J))
        {
            ani.SetTrigger("Attack");
        }
        if (Input.GetKeyDown(KeyCode.LeftShift))
        {
            MoveSpeed *= 2;
        }
        if(Input.GetKeyUp(KeyCode.LeftShift))
        {
            MoveSpeed /= 2;
        }
    }
}

代碼決議:

  • 代碼中在Awake中拿到Animator組件,在Update中定義了一個簡單的移動和旋轉的方法

  • 然后通過判斷 是否按下水平和垂直軸 來進行 是否播放移動影片的方法

  • 如果按下任意一個WASD或者上下左右鍵,呼叫ani.SetBool(“CanMove”,true);進行播放移動影片

  • 不然就執行ani.SetBool(“CanMove”,false);執行待機影片

  • 然后對當前是否進行播放移動影片進行了一個判斷:if (ani.GetCurrentAnimatorStateInfo(0).IsName(“Move”))

  • 如果在播放移動影片,則按下Shift鍵時,對移動影片播放進行加速,并且加速小貓咪的移動速度,這樣就可以讓小貓咪的移動速度和影片播放速度更協調

  • 不然的話小貓咪普通移動時的影片播放加速移動時的影片播放就是一樣的,顯然不符合常理,之前所添加的MovePlayerSpeed屬性就是為了如此!

  • 再就是按下J鍵的時候呼叫 ani.SetTrigger(“Attack”);進行攻擊影片的播放~

上動圖,看效果!
在這里插入圖片描述

  • 到此為止一個簡單的Animator使用就完成啦!
  • 我做的這個只是最簡單的Animator使用方法,在真正的一個游戲里面,對影片這塊的內容操作也是極其復雜
  • 本篇文章只是作為一個對Unity影片系統的基礎入門介紹+使用
  • 想更深入影片系統還需要更多的時間進行研究!

👥總結

  • 本文介紹了Unity中的兩種影片系統:AnimationAnimator

  • 目前前者用的較少,后者使用的較為普遍

  • 文章不僅對Unity影片系統做了一個簡單的介紹,還分別介紹了兩種影片系統的基礎屬性和實戰演練

  • 感興趣的小伙伴可以自己動手演練一番,畢竟實戰出真知!

  • 個人感覺介紹的可能沒有那么深,但還是挺詳細的,適合新手入門!

  • 如果文章哪里寫的不好,請各位多多指教~
    文章干不干,你來說了算!肝了兩天,碼字不易!

  • 覺得文章不錯可以給個三連支持一下博主哦~謝謝
    在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/287429.html

標籤:其他

上一篇:C語言案例教程詳解

下一篇:DHT協議介紹

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more