9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityに出前メニューを追加する

Last updated at Posted at 2018-06-11

Unityのメニューから出前注文やってみた。
これでゲームジャムも大丈夫。

#どうして出前?
1.@kaorun55 さんのtweetを見て。
2.twitterでOculusGoの話の流れから2014年グローバルゲームジャムの話が出てきて、ランチ外出する余裕なくて会場にピザ出前したの思い出したので。
(出前がらみといえば MA11鹿児島ハッカソンのやつも出前がらみだった。

#ゴール設定。Unityから出前注文する。
image.png

#ざっくり仕組み
VisualStudioでwindowにブラウザ表示するエディタ拡張するクラスライブラリ作ってUnityに適用する。

#1.VisualStudioでプロジェクト作る。
image.png

#2.「Visual C#」の「クラスライブラリ」を選択、名前(とりあえずdemae)を入力しOK押下。
image.png

#3.とりあえず保存する。
image.png

#4.「プロジェクト」→「プロパティ」を開く。
image.png

##「アプリケーション」→「ターゲットフレームワーク」を「.NET Framework 3.5」に変更。プロジェクト再起動を求められるのでOKを押下。
image.png

#5.「プロジェクト」→「参照の追加」を開く。
image.png

##「参照マネージャー」で「参照」をクリックし利用するUnityフォルダ内の「\Editor\Data\Managed」開き「UnityEditor.dll」と「UnityEngine.dll」を選択して「追加」ボタン押下。
image.png

#6.「ソリューション エクスプローラー」で「Properties」内の「AssemblyInfo.cs」を選択。
image.png

##「using UnityEngine;」 、「 [assembly: AssemblyIsEditorAssembly] 」を追加
image.png

#7.「Class1.cs」にコード記述してエディタにWeb ページを表示実装。

image.png

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」が作成。
image.png

#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>

image.png

#10.「demae」フォルダ内に「Editor」フォルダ作成し「demae.dll」配置。

#11.Unity起動して確認。

image.png

#12.ホントに注文できるか確認。
image.png

#これでUnityからピザでも寿司でもカレーでも、出前取れますね。
ここまでして思ったけど、Qiitaを表示しても地味に便利かもしれない…

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?