Tag: C#

UnityのC#でXMLを読み込む。

xmlデータを取得して内容を読み込むことができると、例えばTwitterのタイムラインを表示させたりブログの記事を読み込んだりと、様々なWEBアプリケーションと連携することができて夢が広がります。

javascriptならxmlを簡単に読み込める形にしてくれる外部jsを読み込むか、C#ならxmlクラスがあるのでそれを使います。で、javascriptだと日本語の情報が無いのもありなかなかうまくいかないので、どうせならということでC#でやってみました。

Twitterのタイムラインのxmlについて

読み込むxmlはTwitterのタイムラインの方が今っぽいですかね。
以下のアドレスで@motar_24のTweet(20件)がXML形式で取得できます。ブラウザのアドレスに直接打っても確認できますが、safariだと改行されずそのまま表示されます。Chromeだと整形して表示してくれますね。
[javascript]http://twitter.com/statuses/user_timeline/motar_24.xml
[/javascript]

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をインストールする必要があるかもしれません。

内容をコメントしてあるので参考にしてください。
[javascript]
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);

}
}
[/javascript]

上記のスクリプトをコピペしてGameObjectとかに貼りつけてプレビューすれば、ConsoleにTweetが表示されているはずです。
実際に使うときにはGUI.Labelに入れたりします。できてしまえば簡単ですね!

UnityでWindowsのソフトを立ち上げる。C#

EXE形式のWindowsUnityアプリから、Windowsのソフトを立ち上げるやり方。ブラウザ向けにビルドしようとするとエラーになりました。Macはもちろん不可。
当初はそんなことができるか見当もつきませんでしたが、Facebookで質問したところ教えていただきました。
スクリプトはC#です。WindowsのコマンドやC、C++も入力できるようですが、そちらはUnity Proにする必要があります。

[javascript]
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”);
}
}
}[/javascript]

上記の例では単純にボタンを押すとエクスプローラーが立ち上がります。

今回はC#なので色々とインポートしてMonoBehaviourを継承してから記述します。
まずはSystem.Diagnosticsを読込んで、後はSystem.Diagnostics.Process.Start関数で読込むだけです。

[javascript]
System.Diagnostics.Process.Start(“アプリケーション”,”ファイルのパス”);
[/javascript]

注意する点として、ファイルのパスに使う¥マークは2つ必要です。C#の仕様で、多分バックスラッシュがどーのっていう理由だと思います。
あまりWindows用のEXEファイルを起動させる機会はあまりないと思いますが、業務用であれば需要がありそうです。

ということで久しぶりの投稿でした。

© 2017 UXIC.net

Theme by Anders NorenUp ↑