デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理を基礎からやり直す

UnityでVisual Basicを使ってみる

これは、Visual Basic Advent Calendar 2015およびUnity Advent Calendar 2015の18日目の記事です。
Visual Basicのの17日目の記事はhilaponさんの「Visual Basic 2015 の新機能(その1)」でした。
Unityの17日目の記事はcra_cellarさんの「EditorWindowのデザインを作成するエディター拡張」でした。

Unityでは3種類のプログラミング言語C#, JavaScript(型付), Boo(Python方言)を使用することが出来ます。しかし、Unity5からはスクリプトリファレンスや新規作成から Boo が無くなりましたので、実質は2種類ということになります。
ここで書くまで勘違いしていたのですが、UnityScriptはJavaScript(型付)のことだったんですね、Booと間違えてました。
Unityの言語使用比率は、C# 約80%、JavaScript 約20%となっているようです。

.NET系開発の2大言語は、C#VisualBasicですよね。だとしたらUnityでもVisual Basicを選択言語としてサポートしてくれてもいいのに…。
ま、コスト的にはサポートする言語を増やすのは難しいでしょうけど。

ということで、無理矢理にでもUnityでVisual Basicを使ってみようというのが、今回のテーマです。

自分が考えた方法は下記の2点となります。どちらにしてもIDEによるデバッグ難しいでしょう。
1. Visaul Basicで作成したクラスライブラリ(dll)を参照して使用する
2. .NET Compiler Platform(Roslyn)を使いVisual BasicからC#に変換して使用する


1. Visaul Basicで作成したクラスライブラリ(dll)を参照して使用する

以前、「初心者がF#をUnityで使ってみた!」の記事を見たことがあったので、この方法ならVisual Basicでも出来ると思っていました。

Visual Basicのプログラム 「unityVBTest.dll」を作成

Public Class UnityVBTest

    Public Function Message() As String
        Return "Hello VB DLL"
    End Function

End Class

UnityのC#スクリプト 参照に「unityVBTest.dll」を追加

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class test : MonoBehaviour
{
    public Text Message;

    // Use this for initialization
    void Start()
    {
        var vbTest = new unityVBTest.UnityVBTest();
        Message.text = vbTest.Message();
    }
}

【実行結果】文字をDLLから取得して表示している。
f:id:Yaju3D:20151218010435j:plain


2. .NET Compiler Platform(Roslyn)を使いVisual BasicからC#に変換して使用する

.NET Compiler Platform(Roslyn)ですが、2年前の「Visual BasicでRoslynを使ってみる」でプログラムを作成した以来です。久しぶりにさわってみるといろいろ変更があったようで、この記事向けに数時間で組むとなると自分の力量では無理と判断しました。
すみませんが、日を改めて別記事とさせて頂きます。

構想としては、Visual Studioにビルドイベントがありますので、Visual BasicでUnityのプログラムを作成し、ビルド完了時にNET Compiler Platform(Roslyn)でVisual BasicからC#に変換します。もちろん、アタッチするのは変換したC#スクリプトとなります。

Visual BasicからC#に変換するプログラムは、gekkaさんの下記サイトを参考にして逆のものを作成してみるつもりです。
Roslynを使用してC#からVBに変換する方法


ではでは、
19日目のVisual Basic Advent Calendar 2015は、hilaponさんです。
19日目のUnity Advent Calendar 2015は、kyubunsさんです。