激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

Unity3D框架插件uFrame實踐記錄(二)

發(fā)布時間:2024-04-13 13:41:17 瀏覽量:137次

5.創(chuàng)建屬性和命令

本小節(jié)主要內(nèi)容包括:

  • 在Element節(jié)點上創(chuàng)建屬性數(shù)據(jù)
  • 在Element節(jié)點上創(chuàng)建命令數(shù)據(jù)

5.1.在Element節(jié)點上創(chuàng)建屬性數(shù)據(jù)

在這里,我們首先為Login節(jié)點中的屬性(Properties)部分添加一個新的屬性,該屬性為String型,名為UserName。

首先選中Login節(jié)點,點擊Properties右邊的“+”號按鈕,此時我們可以發(fā)現(xiàn)Properties區(qū)域已經(jīng)增加了一個新的屬性。

如果需要修改屬性的名字,直接點擊當(dāng)前的屬性名即可進入編輯狀態(tài)。若要修改屬性的類型,則點擊當(dāng)前屬性,會彈出一個屬性的選擇菜單。

這樣,我們就在Login節(jié)點上增加了一條名為UserName的數(shù)據(jù)了。

5.2.在Element節(jié)點上創(chuàng)建命令數(shù)據(jù)

為ViewModel添加了一條屬性數(shù)據(jù)之后,我們接下來再為ViewModel添加第一條命令,用來實現(xiàn)點擊登錄按鈕之后登錄功能的實現(xiàn)。

同樣,點擊Commands旁邊的“+”按鈕,就可以在Commands區(qū)域添加一個新的命令。

和屬性數(shù)據(jù)類似,我們也可以修改命令的返回類型和命令的名字。

6.綁定View和ViewModel

本小節(jié)主要內(nèi)容包括:

  • 創(chuàng)建View和ViewModel的連接
  • 在View中綁定ViewModel上定義的屬性或命令,進行監(jiān)聽

6.1.連接View和ViewModel

接下來,我們就來創(chuàng)建ViewModel的輸出和View的輸入之間的連接。如圖,選中一個節(jié)點,我們都可以看到節(jié)點左側(cè)的各個部分都分別有一個三角形標識,那些代表的是輸入,其中需要指出的是,在節(jié)點最上面的輸入是表示繼承自某某節(jié)點的,而右側(cè)則是各個輸出口。

左鍵點擊Login節(jié)點的輸出口,拖拽到LoginView的Element輸入點,View和ViewModel之間的鏈接便被建立了。

這個鏈接被創(chuàng)建完畢之后,即意味著View可以將ViewModel中的數(shù)據(jù)用可見的方式在游戲世界中表現(xiàn)出來。

不過這里要提醒大家需要注意的是一個ViewModel可以連接很多不同的View,因為相同的數(shù)據(jù)有可能會有不同的使用場景,這也從一個側(cè)面反映出了這種架構(gòu)方式對具體的使用場景不關(guān)心,數(shù)據(jù)和表現(xiàn)之間是解耦的,相同的數(shù)據(jù)可能有不同的表現(xiàn)形式,例如玩家身上的某件物品的數(shù)據(jù)既可以用來表現(xiàn)為背包的內(nèi)容,也可以表現(xiàn)為裝備的屬性等等。這樣做的結(jié)果就是使我們的數(shù)據(jù)具備了移植和復(fù)用的可能。

6.2.監(jiān)聽屬性變化或命令觸發(fā)

View和ViewModel之間的鏈接建立完畢之后,我們就可以在View中綁定一些我們感興趣的數(shù)據(jù)、訂閱一些我們關(guān)心的事件了。

首先選中LoginView節(jié)點,之后可以看到Bindings區(qū)域,點擊Bindings旁邊的“+”按鈕會有一個選擇框彈出

,我們可以在選擇框中設(shè)置我們關(guān)心的操作,列表中所有備選的數(shù)據(jù)和命令都來自上一步中鏈接的ViewModel。

我們選擇Login To Button的選項,將Login命令和某個按鈕進行綁定,一旦該按鈕被按下,會觸發(fā)Login命令。

還選擇UserName To Input Field,將UserName這條屬性顯示在一個輸入框中。

完成之后,View的Bindings的內(nèi)容如下圖:

當(dāng)然,現(xiàn)在還沒有這樣的按鈕和輸入框,我們會在后面制作它們。

現(xiàn)在在uFrame的可視化設(shè)計器中的設(shè)計工作已經(jīng)接近尾聲了,下一步我們就要將這個可視化工程保存并編譯生成對應(yīng)的模板代碼。

7.保存及編譯設(shè)計圖工程

本小節(jié)主要內(nèi)容包括:

  • 保存并編譯設(shè)計圖工程
  • 創(chuàng)建工程中的uFrame Kernel

7.1.保存并編譯設(shè)計圖工程

在可視化設(shè)計器中將工程的邏輯關(guān)系設(shè)計完畢之后,我們就可以生成uFrame的模板代碼了。

我們點擊可視化設(shè)計器右上角的Save & Compile按鈕即可進入編譯過程。

編譯完畢之后,在工程目錄下生成了模板代碼,模板代碼包括兩部分: designer文件,這些文件的內(nèi)容是不可以修改的,它們是按照設(shè)計器中設(shè)計的關(guān)系生成的代碼。它在代碼層面指明了各個模塊和各個對象的關(guān)系,但是不包括具體的邏輯。 可編輯代碼文件,這些文件是我們可以修改的,uFrame只為我們生成這些文件,它們最初都是空的,需要我們自己去實現(xiàn)其內(nèi)容。

7.2.創(chuàng)建工程中的uFrame Kernel

生成uFrame的模板代碼還不是結(jié)束,我們還需要有一個和U3D交互的入口來初始化整個uFrame框架并保持一個和U3D交互的管道。所以我們接下來就要通過可視化設(shè)計器來創(chuàng)建uFrame Kernal來實現(xiàn)框架初始化的一系列工作,例如服務(wù)初始化、場景初始化、場景加載器初始化等等。

創(chuàng)建uFrame Kernal的按鈕在Save & Compile按鈕旁邊,稱為“Scaffold/Update Kernel”。我們只需要點擊這個按鈕就可以創(chuàng)建/更新當(dāng)前工程的Kernel。

生成的Kernel會以U3D的Prefab的形式存在于工程的文件夾中。

其中包括以下這3個部分:

  • Services
  • SystemLoaders
  • SceneLoaders

上面都綁定了和U3D交互的腳本。 下面我們就來導(dǎo)入真正的U3D場景。

8.綁定場景

本小節(jié)內(nèi)容包括:

  • 使用uFrame的SceneType節(jié)點創(chuàng)建新場景
  • 將場景和View進行綁定

8.1.使用SceneType節(jié)點創(chuàng)建新場景

uFrame為了便于管理和框架相關(guān)的場景,因此推出了一個被稱為SceneType的節(jié)點類型,我們在可視化設(shè)計器中返回最上層的環(huán)境,右鍵添加一個SceneType節(jié)點。

選中LoginScene,點擊右鍵可以在打開的菜單中選擇Create Scene。默認會創(chuàng)建一個和SceneType節(jié)點同名的一個新的場景。

此時打開新生成的場景,在Hierarchy中也生成了對應(yīng)的_LoginSceneRoot,在這上面掛載了uFrame的Scene腳本,作為uFrame和U3D互動的橋梁。

接下來,我們將View和該場景進行綁定。

8.2.將場景和View進行綁定

在_LoginSceneRoot下創(chuàng)建一個新的空GameObject,并在該GameObject上添加View腳本——我們的LoginView腳本。

此時,我們可以在inspector窗口中看到在設(shè)計圖中設(shè)定的兩個綁定,Login對應(yīng)的Button控件,UserName對應(yīng)的Input控件,之后我們只需在U3D中創(chuàng)建一個Button和Input(要使用uGUI),然后把兩者分別拖入選框中即可。

9.添加業(yè)務(wù)邏輯代碼

本小節(jié)內(nèi)容包括:

  • 為View添加代碼
  • 為ViewModel和Controller添加代碼

9.1.為View添加代碼

View的代碼存在于View文件夾下的XXXView.cs文件中,當(dāng)然我們也可以在可視化設(shè)計器中打開該文件。選中View節(jié)點,右鍵點擊Open->Designer Files->FoxMain->Views->XXXView.cs即可打開代碼文件,添加自己需要的邏輯即可。

9.2.為ViewModel和Controller添加代碼

為ViewModel和Controller添加代碼的過程也十分類似,首先選中Element節(jié)點,點擊右鍵 Open->Designer Files->FoxMain此時會分成ViewModel和Controller來選擇。

打開LoginController.cs文件之后,就可以添加Controller中的邏輯了。

public class LoginController : LoginControllerBase {
    
    public override void InitializeLogin(LoginViewModel viewModel) {
        base.InitializeLogin(viewModel);
        // This is called when a LoginViewModel is created
    }
    
    public override void Login(LoginViewModel viewModel) {
        base.Login(viewModel);
        UnityEngine.Debug.Log("登陸用戶名:" + viewModel.UserName);
        UnityEngine.Debug.Log("登陸成功?。。。?!");
    }
}

在Login方法中,我們會打印出ViewModel數(shù)據(jù)層的UserName數(shù)據(jù),并提示登陸成功。

如圖,一個各個層沒有耦合的模塊就完成了。

熱門課程推薦

熱門資訊

請綁定手機號

x

同學(xué)您好!

您已成功報名0元試學(xué)活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定