Unityのメニューから出前注文やってみた。
これでゲームジャムも大丈夫。
どうして出前?
1.@kaorun55 さんのtweetを見て。
2.twitterでOculusGoの話の流れから2014年グローバルゲームジャムの話が出てきて、ランチ外出する余裕なくて会場にピザ出前したの思い出したので。
(出前がらみといえば MA11鹿児島ハッカソンのやつも出前がらみだった。
ゴール設定。Unityから出前注文する。
ざっくり仕組み
VisualStudioでwindowにブラウザ表示するエディタ拡張するクラスライブラリ作ってUnityに適用する。
1.VisualStudioでプロジェクト作る。
2.「Visual C#」の「クラスライブラリ」を選択、名前(とりあえずdemae)を入力しOK押下。
3.とりあえず保存する。
4.「プロジェクト」→「プロパティ」を開く。
「アプリケーション」→「ターゲットフレームワーク」を「.NET Framework 3.5」に変更。プロジェクト再起動を求められるのでOKを押下。
5.「プロジェクト」→「参照の追加」を開く。
「参照マネージャー」で「参照」をクリックし利用するUnityフォルダ内の「\Editor\Data\Managed」開き「UnityEditor.dll」と「UnityEngine.dll」を選択して「追加」ボタン押下。
6.「ソリューション エクスプローラー」で「Properties」内の「AssemblyInfo.cs」を選択。
「using UnityEngine;」 、「 [assembly: AssemblyIsEditorAssembly] 」を追加
7.「Class1.cs」にコード記述してエディタにWeb ページを表示実装。
Class1.cs
using System.Reflection;
using UnityEditor;
namespace demae
{
public class Class1
{
[MenuItem("Tools/demae")]
private static void Show()
{
var type = typeof(Editor)
.Assembly
.GetType("UnityEditor.Web.WebViewEditorWindowTabs");
var attr =
BindingFlags.Public |
BindingFlags.Static |
BindingFlags.FlattenHierarchy;
var methodInfo = type
.GetMethod("Create", attr)
.MakeGenericMethod(type);
methodInfo.Invoke(null, new object[]
{
"demae", // 表示ウィンドウのタブ名
"https://demae-can.com/", // URL
300, // 最小幅
300, // 最小高
1000, // 最大幅
1000 // 最大高
});
}
}
}
8.「ビルド」→「demaeのビルド」でDLLのビルド。「【3で保存したフォルダ】\ClassLibrary1\bin\Debug」フォルダに「demae.dll」が作成。
9.利用バージョンUnityフォルダ配下の「Editor\Data\UnityExtensions\Unity」に「demae」フォルダ作成しdllやunityバージョンを指定し「ivy.xml」の作成。
ivy.xml
<?xml version="1.0" encoding="utf-8"?>
<ivy-module version="2.0">
<info version="1.0.0" organisation="yourname" module="demae" e:packageType="UnityExtension" e:unityVersion="2018.1.3f1" xmlns:e="http://ant.apache.org/ivy/extra" />
<publications xmlns:e="http://ant.apache.org/ivy/extra">
<artifact name="Editor/demae" type="dll" ext="dll" />
</publications>
</ivy-module>
10.「demae」フォルダ内に「Editor」フォルダ作成し「demae.dll」配置。
11.Unity起動して確認。
12.ホントに注文できるか確認。
これでUnityからピザでも寿司でもカレーでも、出前取れますね。
ここまでして思ったけど、Qiitaを表示しても地味に便利かもしれない…