イメージ 1


以前紹介した大学のサークルの展示イベント向けのスコア共有サーバの.NET用クライアントライブラリが完成しました。

【ソフトウェア情報】a32GameServer
http://blogs.yahoo.co.jp/a32kita/12621571.html

このクライアントライブラリを利用することでスコアの送信や送信結果の受信は専用の型のオブジェクトを使って簡単に行えるようになります。

C#で書いた.NETアセンブリということで、通常であればUnityで動かすことが可能なのですが、1つ気になる点が。。。
クライアントライブラリから使用しているぼくの個人用ユーティリティライブラリ()が一部レジストリ操作系のクラス・メソッドの定義も含んでいます。そのため、Windowsに依存している.NET FrameworkのSystem.dll内の名前空間「Microsoft.Win32」を利用するクラス・メソッドがそのユーティリティライブラリに含まれているんです。
クライアントライブラリを参照するとそのユーティリティライブラリも自動的に参照されるわけで、これを通常の.NET Frameworkで動かす場合は心配ありません。ですが動かすのがUnityとなると問題が。。。
UnityはC#が利用できる、.NETの標準ライブラリが利用できるということで.NET Frameworkを利用していると思っている方がいらっしゃるようですが、実は違います。
Unityが.NETのアセンブリを走らせるのに利用しているのはMicrosoftが開発した公式の.NETランタイム「.NET Framework」ではなく、クロスプラットフォームを目的として開発が進められている「mono」なんですよね。
そうするともちろん提供される標準ライブラリも.NET Frameworkのものではなくmonoのものになるわけで。。
.NET FrameworkはWindows向けのため、標準ライブラリの「System.dll」にレジストリ操作系のクラスが定義されていてもおかしくはないのですがクロスプラットフォームを目的としたmonoの「System.dll」に果たしてレジストリ操作系の定義が存在するか。。。
そのためレジストリ操作系のクラスを「System.dll」から呼び出して利用する機能の定義を含んでいるユーティリティライブラリ、更にはそのユーティリティライブラリを利用しているクライアントライブラリがUnityで動作するか不安だったんです。

僕の予測ですが、恐らくユーティリティライブラリのWindows依存系のクラス・メソッドを呼びださなければmonoでも問題なく動作するようですね。


はい。

話がすごい長くなってしまいましたが、要はスコア共有用のクライアントライブラリがUnityで動作したということです。
更に言うとLinux + monoの環境でも動作する可能性が高いことが確認されたということです。

C#で夢広がりますね((
まぁそんなクロスプラットフォームにこだわるならJavaやれって話ですが((

では。