【HTML5ゲーム開発】TinyUnityで躓いた人のためのトラブルシューティング

 **この記事の情報は既に古くなっています**
    
~~**ProjectTiny(TinyUnity)に関する最新情報はLiberapp様のTECHLOGSにて掲載させて頂いております。**~~

# ページリンク
~~**https://corp.liberapp.net/?author=3**~~
該当サイトが公開終了しました。
当ページの情報はすべて古いため、参考にしないようお願い致します。
# 前置き

TinyUnityにて発生する
「インポートの時点でコンソールにエラーが表示される」
「サンプルプロジェクトがそもそも実行できない」
「プロジェクトの作成、編集の仕方がわからない」等のトラブルに対しての対処法を記載します。

エラーが発生するであろう時系列順に対処法を列挙していきます。

# 使用Ver

<span style="color: #37b124">Unity:2019.2.0b3</span>
<span style="color: #ee6f0b">TinyUnity:0.16.2</span>

#　目次
1.「インポートの時点でコンソールにワーニングが表示される」
2.「インポートの時点でコンソールにエラーが表示される」
3.「実行時にフリーズ、ビルドエラーが発生する」
4. 現在のTinyUnityの問題点について
5. 参考にしたサイト

## 「インポートの時点でコンソールにワーニングが表示される」

TinyUnityのインポート時に
    
    “Assembly for Assembly Definition File '[...]/Unity.Tiny.Thread.Native.asmdef' will not be compiled, because it has no scripts associated with it. [...])”
    
のようなワーニングが表示されるかもしれませんが、
    
**<span style="color: #ee6f0b"><span style="font-size: 200%">問題ありません。</span>**
        
仕様であることが公式からアナウンスされています。

放置しても構いませんが、気になるようでしたらUnityを再起動してください。
インポート時のスクリプトの読み込み、リンクの順番によって引き起こされるワーニングです。

最終的にすべてのスクリプトがインポートされた際に問題は解決されています。
途中で発生するワーニングが表示されたままなだけなのです。

**この症状はサンプルプロジェクトのインポート時にも発生することがありますが、同様に無視するか再起動してください。**

# 「インポートの時点でコンソールにエラーが表示される」


1.最新のWindowsSDKがインストールされているか確認してください。
    
　<span style="font-size: 150%"><span style="color: #ee6f0b">**「Windows 10 SDK 10.0.17763.0」**</span>
　されていない場合はインストールをしてください。

2.次に、.NETのバージョンを確認してください。
     
   <span style="font-size: 150%"><span style="color: #ee6f0b">**「.NET 4.7.2」**</span>
       
　インストールされていれば問題なく動作することを確認しています。

　実際のところ、
    <span style="font-size: 150%"><span style="color: #ee6f0b">**「.NET 4.0」**以降がインストールされてれば問題ないと思います。</span>
        
　理由として、TinyUnityやECSを動作させるために.NET4.0が要求されているためです。

 どのバージョンがインストールされているかは下記を参照し確認してください
 https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed
        
されていない場合はインストールしてください。


# 「実行時にフリーズ、ビルドエラーが発生する」


<span style="font-size: 150%"><span style="color: #ef0606">このエラーはおそらく、今後のアップデートにて修正されます。
理由として、TinyUnity事態のシステムスクリプトの設計ミスから引き起こされているためです。</span>
    
<span style="font-size: 150%">対処法は二つありますが、一番手軽な方法を記載します。</span>
    
   1.
    まず、UnityEditorの上部メニューから 
   **「DOTS>Open Project…」**
    と進み、TinyUnityのプロジェクトを開いてください。
    
![0832e191-1059-40d4-91f2-7bcea99d6582-960x823r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466861/e2c1bfd5-e303-298c-5217-a7950b18f314.png)

    
   2.
    その後、UnityEditorの上部メニューから
   **<span style="color: #ee6f0b">「Assets>Open DOTS C# Project」</span>**
    と進んでください
    この時、IDEにてプロジェクトが展開されます。
    この際に各種スクリプトがコンパイルされ、TinyUnityに必要なファイル等が生成されます。

    
![d5b302d8-5d07-4278-841f-e2863da73448-960x1262r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466861/8ec71bfd-8c6b-5626-594a-75361192537e.png)

    
3.
これでビルドが通るようになっているはずです。実行ボタンを押してください。
この時、**<span style="color: #ee6f0b">ビルドエラーが出て中止される場合もあります</span>**が、
**<span style="color: #ef0606">もう一度実行すれば問題なくビルドが通ります**。
お疲れさまでした。
    
# 何故この方法でビルドエラーが解消するのかについて
    
おそらく、技術者の皆様であれば、なぜこのセットアップを実行すると、ビルドエラーが解消されるのか、
    理由が気になっていることかと思います。理由がわからないと不安で仕方がない！という方もいらっしゃるかもしれません。
    そのため、ある程度ざっくりとではありますが、理由を記載しておきます。<span style="color: #ef0606">間違っているかもしれません、その際はご指摘ください。</span>
    まず、結論から言いますと**「<span style="color: #ef0606">”selectedconfig.json”</span>が生成されていないため」**です。
    本来であれば実行時や、インポート時に生成されるべきなのですが、それが生成されない場合があります。
    その際にビルドエラーやビルド時のフリーズが残り続ける症状が発生します。
    そのため、**DOTS C#プロジェクトとして一度開く手順を行うことで、selectedconfig.jsonの作成を促し、問題を解決する** ことができます。
    <span style="color: #ee6f0b"> **BuildStepGenerateBeeFiles.cs** </span>を修正することで解決することも可能です。
    
Run関数を以下のようにすることで解決が可能です

```C#
public bool Run(BuildPipeline.BuildContext context)
{
    var workspaceManager = context.Project.Session.GetManager<WorkspaceManager>();
    var selectedConfiguration = workspaceManager.ActiveBuildTarget.GetBeeTargetName() + "-" + workspaceManager.ActiveConfiguration;
    BuildProgramDataFileWriter.WriteAll(context.OutputDirectory.FullName,selectedConfiguration);
    WriteBeeExportManifestFile(context);
    WriteBeeBuildSettingsFile(context);
    return true;
}
```

 しかし、この解決法は根本的な解決法ではあるものの、将来のアップデートで確実に解決される問題であり、
 なおかつプロジェクトの作成ごとにこの手順を踏む必要があるため、そもそも開いた時点で解決されているわけです。
リターンに対してコストがあっていないようにも感じます。
    
# 現在のTinyUnityの問題点について
    
- IL2CPPでのビルドは現状、とても不安定なため、IL2CPPでビルドはしないほうが良いです

- プロジェクトによっては、Webビルドができない場合があります。
現在調査中ではありますが、これもTinyUnity自体のバグです。アップデートを待ちましょう。

#参考にしたサイト
- TinyUnityForum「Project Tiny preview-0.16.1 (C#) available, and upcoming changes」
- https://forum.unity.com/threads/project-tiny-preview-0-16-1-c-available-and-upcoming-changes.708875/