zoukankan      html  css  js  c++  java
  • 如何:使用 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 环境下执行。

    * 输出目录改成了 AssetsPlugins ,方便 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. 添加 AssetsPluginsAssembly-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

    执行 install.bat 会将模板文件复制到 Visual Studio 2017 的默认模板目录。如果你更改过模板目录,请手动导入。

  • 相关阅读:
    营销型站点的建设流程是什么?
    MAC 通过brew安装软件
    Android实现分享内容到微信朋友圈
    C++设计模式之适配器模式(三)
    JEECG平台权限设计
    .Net修改网站项目调试时的虚拟目录(未验证)
    .Net修改网站项目调试时的虚拟目录
    ECharts.js学习动态数据绑定
    百度ECharts
    asp.net loading 动画
  • 原文地址:https://www.cnblogs.com/Nukepayload2/p/u3d_vb_calc.html
Copyright © 2011-2022 走看看