歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用 Visual Basic 編寫基於 Unity3D 的計算器

隨著 .NET 全平台戰略的推進,微軟正在讓以 C# 為先鋒的 .NET 擁有跨平台特性。這個過程中一直有人想知道其它 .NET 語言對跨平台的支持有什麼改進,熟悉 C# 但是喜歡用 VB 的我也不例外。

經過一番摸索,我找到了在 Unity3D 程序開發過程中用 VB 取代大部分情況下的 C# 腳本的方法。本文以用 VB 2017 編寫基於 Unity3D 的計算器為例展示如何在 Unity3D 中使用 VB。

如何使用 Visual Basic 編寫基於 Unity3D 的計算器

預先條件:

讀者需要知道怎樣用 C# 編寫基於 Unity3D 的計算器,並且知道如何用 Visual Basic 編寫 .NET Framework 3.5 類庫。

1. 配置開發環境

安裝 Unity3D 5.5, Visual Studio 2017 RC 和 Unity3D Tools for Visual Studio。

如果你看到這個博客的時候有新版的開發環境,並且 Unity3D 官方沒有提供方便使用 VB 代碼的功能,仍然需要裝最新版的工具。

Unity3D https://unity3d.com/cn/get-unity/update

Visual Studio https://www.visualstudio.com/zh-hans/downloads/

2. 用 Unity3D 設計用戶界面

像用 C# 寫一樣,你需要新建一個 2D 項目,然後在自動創建的場景裡面拖按鈕和標簽控件組成計算器的視圖。

3. 用 Visual Basic 編寫邏輯代碼

在項目根目錄(Assets 之外那一層)附件鏈接中的項目模板新建一個 VB 類庫項目。

我寫的項目模板有如下特點:

* 默認程序集名稱是 Assembly-VisualBasic,默認命名空間是空的

* 是 .NET Framework 3.5 的 VB 類庫。

* 假設 Unity3D 裝在 D盤,引用了相關的程序集。

* 手動編輯了 .vbproj 文件,開啟了 VBRuntime Embed 編譯模式。這樣編譯出來的類庫可以正常地在 Mono 環境下執行。

* 輸出目錄改成了 Assets\Plugins ,方便 Unity3D 識別。

* 編譯條件抄了 Assembly-CSharp 項目,只不過把 “;” 改成了 “,” 。

我給出的模板已經包含了一個不完整的計算器的 MonoBehavior 類, 還有計算器相關邏輯的兩個類。

如果你打算自己編寫一個 MonoBehavior,請用附件鏈接中的項模板新建一個 VB 的 MonoBehavior 類。

注意:MonoBehavior 的事件處理方法的簽名最好用下拉框自動生成(如圖所示)。這樣盡管 Unity3D Tools for Visual Studio 不支持 Visual Basic,也不會導致聲明錯誤的事件處理程序。

這個下拉框自動生成事件處理程序的實現原理是在 .Designer.vb 裡面預先定義可能要寫的事件處理程序的 Partial Private Sub 聲明。這些過程如果不給出有實際內容的實現,編譯的時候就不會被生成。這正好與 Unity3D Tools for Visual Studio 為 C# 所做的輸入輔助的實際行為一樣。

在計算器的 MonoBehavior 中,你需要聲明表示計算器顯示器的公有字段(在示例中是 TblValue 字段),和需要讓按鈕關聯的無參公有的方法。每個按鈕都需要一個方法對應它們的 Click 事件處理。

至於計算器本身怎麼實現計算功能,看附件鏈接。

寫完了別忘記生成。

4. 修改 C# 腳本

這一步超級簡單。只要很短的時間就可以完成。

1. 用 Visual Studio 打開 C# 腳本項目中的 Assembly-CSharp

2. 添加 Assets\Plugins\Assembly-VisualBasic.dll 的引用

3. 對於每一個用 VB 寫的 MonoBehavior ,新建一個 公有的 c# 類,並且繼承它。

比如說,你用 VB 寫的是

VB

Public Class MainSceneBehaviorBase
    Inherits MonoBehaviour
     ' ...
End Class

對應的 C# 類是:

C#

public class MainSceneBehavior : MainSceneBehaviorBase {}

沒錯,C#只要寫一個空的類就可以。寫完生成一下。

5. 關聯腳本與前台代碼

像用 C# 開發一樣,把繼承了 VB 的 MonoBehavior 那個類掛載到一個游戲對象上面(我把它掛到了 Canvas 上面,因為寫計算器不需要針對 Canvas 編程),綁定腳本(VB 代碼)中定義的 Public 字段(計算器的顯示器),關聯每一個按鈕的 OnClick 事件到用 VB 寫的事件處理程序。

關聯腳本和事件的操作與用 C# 寫的時候沒有任何區別。

設計器可以借助 C# 腳本的繼承正確地識別用 VB 寫的 MonoBehavior 的成員。

6. 生成並運行

我用 Windows 10 的電腦和 Android 4.2 的手機進行了測試,計算器可以計算合理的表達式。

附錄

1. 項目源代碼

https://github.com/Nukepayload2/Unity3DCalculatorVB/

2. VB 項目模板

https://github.com/Nukepayload2/Unity3DCalculatorVB/tree/master/Templates

備份在Linux公社1號FTP服務器下載

------------------------------------------分割線------------------------------------------

FTP地址:ftp://ftp1.linuxidc.com

用戶名:ftp1.linuxidc.com

密碼:www.linuxidc.com

在 2017年LinuxIDC.com\1月\使用 Visual Basic 編寫基於 Unity3D 的計算器\

下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm

------------------------------------------分割線------------------------------------------ 

執行 install.bat 會將模板文件復制到 Visual Studio 2017 的默認模板目錄。如果你更改過模板目錄,請手動導入。

Copyright © Linux教程網 All Rights Reserved