UnityのC#でXMLを読み込む。
xmlデータを取得して内容を読み込むことができると、例えばTwitterのタイムラインを表示させたりブログの記事を読み込んだりと、様々なWEBアプリケーションと連携することができて夢が広がります。
javascriptならxmlを簡単に読み込める形にしてくれる外部jsを読み込むか、C#ならxmlクラスがあるのでそれを使います。で、javascriptだと日本語の情報が無いのもありなかなかうまくいかないので、どうせならということでC#でやってみました。
Twitterのタイムラインのxmlについて
読み込むxmlはTwitterのタイムラインの方が今っぽいですかね。
以下のアドレスで@motar_24のTweet(20件)がXML形式で取得できます。ブラウザのアドレスに直接打っても確認できますが、safariだと改行されずそのまま表示されます。Chromeだと整形して表示してくれますね。
http://twitter.com/statuses/user_timeline/motar_24.xml
XMLの記述内容についてはここでは省略しますが、タグで囲まれているTweetテキストがあるのがわかると思います。このテキストを引っ張ってきて表示させるわけです。
注意点として、ローカルからならTwitterのAPIにアクセス(XMLを取得)できますが、Unityのプロジェクトがウェブに公開される場合(webプレーヤー)はクロスドメインの関係で取得できないようです。flashの場合はphpをかましてできるみたいですが、Unityはわかりません。
(http://d.hatena.ne.jp/nakamura001/20110730/1312044175)
XMLを取得するC#
Macでやりたい場合は、Monoをインストールする必要があります。
mono
Windowsの場合、7やVistaなら問題ないですが、XPなら.NET Frameworkをインストールする必要があるかもしれません。
内容をコメントしてあるので参考にしてください。
using UnityEngine;
using System.Collections;
using System.IO;// 追加で記述
using System.Xml;// 追加で記述
public class XMLLoder : MonoBehaviour {
// TwitterのxmlデータのURL
string XMLFilePath = "http://twitter.com/statuses/user_timeline/motar_24.xml";
XmlDocument doc;// XMLオブジェクト
XmlNodeList nodeListtext;//テキストの配列
void Start () {
doc = new XmlDocument();// XMLオブジェクトを生成
doc.Load(XMLFilePath);// XMLのファイルを読み込む
// 全部配列
nodeListtext = doc.SelectNodes("statuses/status/text");// テキストの配列のできあがり
// あとは配列を読み込むだけ
Debug.Log(nodeListtext[0].InnerText);
}
}
上記のスクリプトをコピペしてGameObjectとかに貼りつけてプレビューすれば、ConsoleにTweetが表示されているはずです。
実際に使うときにはGUI.Labelに入れたりします。できてしまえば簡単ですね!
UnityでWindowsのソフトを立ち上げる。C#
EXE形式のWindowsUnityアプリから、Windowsのソフトを立ち上げるやり方。ブラウザ向けにビルドしようとするとエラーになりました。Macはもちろん不可。
当初はそんなことができるか見当もつきませんでしたが、Facebookで質問したところ教えていただきました。
スクリプトはC#です。WindowsのコマンドやC、C++も入力できるようですが、そちらはUnity Proにする必要があります。
using UnityEngine;
using System.Collections;
using System.Diagnostics;
public class OpneExcel : MonoBehaviour {
void OnGUI ()
{
if(GUI.Button(new Rect(10,10,150,120),"Open Explorer"))
{
System.Diagnostics.Process.Start("EXPLORER.EXE","C:¥¥Documents and Settings¥¥アカウント¥¥My Documents");
}
}
}
上記の例では単純にボタンを押すとエクスプローラーが立ち上がります。
今回はC#なので色々とインポートしてMonoBehaviourを継承してから記述します。
まずはSystem.Diagnosticsを読込んで、後はSystem.Diagnostics.Process.Start関数で読込むだけです。
System.Diagnostics.Process.Start("アプリケーション","ファイルのパス");
注意する点として、ファイルのパスに使う¥マークは2つ必要です。C#の仕様で、多分バックスラッシュがどーのっていう理由だと思います。
あまりWindows用のEXEファイルを起動させる機会はあまりないと思いますが、業務用であれば需要がありそうです。
ということで久しぶりの投稿でした。
