* Tue Mar 07 22:38:22 JST 2017 Naoyuki Sawa
- 当ライブラリをUnityで使い易いように、ソースファイルをまとめるバッチスクリプトを作成しました。
  /clip/tool/ConcatLibclipNet.batを参照して下さい。

* Tue Mar 07 22:38:22 JST 2017 Naoyuki Sawa
- C#6の書式を使っているので、Unityで使う場合はAssets/mcs.rspを作成し「-langversion:6」と書く必要が有ります。
  少なくともUnity Version 5.5.2f1時点では、UnityでC#4の書式しか使えないからです。
  □参考資料:「Unity 5.5でasync/await使えた話 」(http://ufcpp.net/blog/2016/9/awaitinunity55/)
- 具体的な手順としては、/clip/libclip.net/keep/Unity/Assets/mcs.rspを、UnityのプロジェクトのAssetsフォルダにコピーして下さい。
  又は、UnityエディタのProjectペインの中に、mcs.rspをドラッグ&ドロップしてインポートする方法でも構いません。
- 上記はあくまでもUnityがC#6のソースコードをビルドするための対応です。
  VS2015をUnityの外部エディタとしてC#6のソースコードを編集するためには、/clip/libclip.net/keep/Unity/Assets/Editor/ProjectFileHook.csを参照して下さい。

* Wed Mar 08 22:12:10 JST 2017 Naoyuki Sawa
- Visual Studio Tool For Unity 2.xから、2017/03/07にリリースされたVisual Studio Tool For Unity 3.0.0.1にアップグレードする際は、上書きインストールしてはいけない。
  UnityでスクリプトをダブルクリックしてVS2015を開いた時に、SyntaxTree.VisualStudio.Unityが読み込めないというエラーが発生して、しばらくするとVS2015が落ちてしまう。
  この問題を解決するには、以下の手順を行う。
  │①コンロールパネルを開いて、Visual Studio Tool For Unity 3.0.0.1をアンインストールする。	←←←//{{2017/04/07コメント追記:この手順は不要かも知れません。Visual Studio Tool For Unityをインストールした後でも、②だけを行えば直るみたいです。}}
  │②「%localappdata%\Microsoft\VisualStudio\14.0\ComponentModelCache」フォルダの中にあるファイルを全て削除する。
  │③Visual Studio Tool For Unity 3.0.0.1をインストールする。
  □参考資料:「Unity 5.5.1f1 VS 2015 SyntaxTree.VisualStudio.Unity FileLoadException」(https://forum.unity3d.com/threads/unity-5-5-1f1-vs-2015-syntaxtree-visualstudio-unity-fileloadexception.455734/)

* Mon Mar 13 19:10:39 JST 2017 Naoyuki Sawa
- プログラムが例外を投入した時にすぐに止まってほしいので、以下の設定を行いました。
  1. VS2015のメニューバーで、[ツール]⇒[Tools for Unity]⇒[全般]⇒[デバッグ]⇒「例外サポート(試験段階)」を、False⇒Trueに変更しました。
  2. UnityとVS2015を両方終了して、再起動しました。
  3. VS2015のメニューバーで、[デバッグ]⇒[ウィンドウ]⇒[例外の設定]⇒検索に"Appli"と入力して⇒「System.ApplicationException」をOff⇒Onに変更しました。
  上記の変更を行った後、いつもどおりに「Unityにアタッチして再生」を実行しました。
  マウスが押されたらプログラムでわざと「throw new ApplicationException()」をしてみたところ、VS2015でブレークしました!!やった!!	←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←注目
  (※2017/03/13追記)
  別スレッドで例外を投入してもブレークしました。これは便利です!!
  (※2017/03/13追記)
  上記の3.の手順は必要無かったかも知れません。「System.ApplicationException」をOffに戻しても、同様にブレークしたからです。
  (※2017/03/20追記)
  プログラム実行直後のStart()の中で例外が発生すると、上手く止まらない(と言うかハングアップする)みたいです。
  2フレーム目以降のUpdate()の中,及び,別スレッドで例外が発生した場合は問題なさそうなのですが…
  もしかすると、自分のプログラムのせいかもしれないのですが、ともかく、実行直後は要注意です。

* Mon Mar 20 22:44:17 JST 2017 Naoyuki Sawa
- UnityのGUIでラベルを表示すると、文字が小さ過ぎて読めない事が多いです。(PCではマシですが、Androidでは顕著に…)
  手っ取り早く文字を大きくするには、下記のようにするのが良いです。
  │void OnGUI() {
  │  GUIStyle style = new GUIStyle(GUI.skin.label) { fontSize = 100 };
  │  //                            ~~~~~~~~~~~~~~注目           ~~~おおよそ100ピクセルになるようですが、実際には行間の余白等が追加されるため、一行の高さは100ピクセルよりも大きくなります。実際の一行の高さは、style.lineHeightで取得出来ます。
  │  GUILayout.Label("hello, world", style);
  │}
- 昔ながらのゲームの作り方に近い感覚で、背景のピクセル数を固定してプログラムを作るには、以下の資料を参照して下さい。
  □参考資料:「Unity2Dで画面のアスペクト比を固定にしたい【Unity】」(http://qiita.com/kwst/items/371542a6d3892b577b41)
  【注意】
  アスペクト比固定の処理をエディタ上でテストする時は、GameビューのスケールをFreeAspectにしておく必要が有るようです。
  カスタムの固定サイズにしておくと、Gameビューのリサイズに関係無く、アプリケーションからは固定サイズに見えるようで、アスペクト比固定の処理のテストになりません。
- Unityのマネージドプラグインは、WindowsでもAndroidでも同じPE形式のdllファイルがそのままで動く事に気付きました。
  これまで知りませんでした…
  てっきりAndroidでは、Android専用の共有ライブラリ形式(.soとか?)にしなければいけないのだと思っていました。
  これまで、Androidで動くマネージドプラグインを作るのは難しいと思っていたので、当ライブラリをUnityで使う場合はdll化せずにスクリプトとして含める事を想定していたのですが、Androidでもdll化出来る(というかWindows用のdllがそのまま動く)ので、当ライブラリをUnityで使う場合もdll化を検討する事にしました。
  具体的に影響が生じる箇所としては、clipfsm.csのTBL_FsmFuncのgetアクセサにおいて、Unityで使う場合は同じアセンブリ内にFsmFuncクラスが有る事を想定していましたが、そうとは限らなくなりそうです。
  要検討です。	⇒{{2017/03/30コメント追記:対応しました。詳細はこの下のコメントを読んで下さい。}}
* Thu Mar 30 23:36:41 JST 2017 Naoyuki Sawa 追記
- Unityのマネージドプラグインを作成しました。(/clip/libclip.net/keep/Library/を参照して下さい。)
  これによって、すぐ上で述べた通り、clipfsm.csのTBL_FsmFuncのgetアクセサにおいて、Unityで使う場合は同じアセンブリ内にFsmFuncクラスが有る事を想定出来なくなりました。
  仕方が無いので、Unityで使う場合は、TBL_FsmFuncを自動的に取得せず、アプリケーションから明示的にset出来るよう、setアクセサを追加しました。
  /clip/libclip.net/clipfsm.csの同日の変更箇所を参照して下さい。

* Fri Apr 07 21:20:19 JST 2017 Naoyuki Sawa
- 2017/04/07にリリースされた、Visual Studio Tool For Unity 3.1.0.0にアップグレードしました。
  今回も、'Wed Mar 08 22:12:10 JST 2017 Naoyuki Sawa'に起きたのと同じエラーが出ましたが、同じ方法で直りました。
  詳細は、'Wed Mar 08 22:12:10 JST 2017 Naoyuki Sawa'のコメントを参照して下さい。
- 'Tue Mar 07 22:38:22 JST 2017 Naoyuki Sawa'に書いた対応も、引き続き必要です。
  mcs.rspは、Visual Studio Tool For Unityの設定ではなく、Unityの設定だから、Visual Studio Tool For Unityを更新しても必要である事に変わりは無いからです。
  また、ProjectFileHook.csは、インポートしなくても、今回のVisual Studio Tool For Unity 3.1.0.0では、一応、エラー無くコンパイル出来るようになりました。(前回の3.0.0.1ではエラーになっていました。)
  しかし、ProjectFileHook.csをインポートしないと、VS2015のエディタ上で「using static」を使っている行にカーソルを合わせると、エラーがポップアップ表示されてしまうという変な挙動になってしまいます。
  3.1.0.0のChangelog(https://docs.microsoft.com/en-us/visualstudio/cross-platform/change-log-visual-studio-tools-for-unity)を見た所、どうやら3.1.0.0から、VS2015上のコンパイルもmcs.rspを認識するようになったようなので、
  コンパイル自体は言語バージョン6で実行されるものの、*.csprojが相変わらず言語バージョン4の設定を含んでいるため、VS2015のエディタ上では言語バージョン4と見なしてしまい、エラーが表示されるのだと思います。
  結論としては、今回も、前回と同様に、ProjectFileHook.csをインポートしておけば、問題有りません。

* Sun Apr 09 22:05:18 JST 2017 Naoyuki Sawa
- Unityを5.6.0に更新しました。
  以前のバージョンのUnityで作成したプロジェクトを開くと、プロジェクトが自動的に変換されて問題無く動作しました。
  ただし、動作は問題無いのですが、変換時に以下のような警告が出ました。
  ＞Project's default behavior is set to 3D and does not contain packable sprites. Spent 6.17 seconds searching for sprites. Consider setting sprite packing mode to 'Disabled' or 'Enabled for Builds' under Project -> Editor -> Mode to speed up entering Playmode.
  良くわからなのですが、とりあえず、ProjectSettings⇒Editor⇒DefaultBehaviorModeを「3D」から「2D」に変更しておきました。
  何が変わるのが、よくわかりません。⇒追記:新しく作成するプロジェクトに影響するようです。既存のプロジェクトには多分関係無いみたいです。(参照資料:「2D/3D モード設定」(https://docs.unity3d.com/ja/540/Manual/2DAnd3DModeSettings.html)」
  或いは、上記の警告は、ProjectSettings⇒Editor⇒SpritePacker⇒Modeを「AlwaysEnabled」以外に変更しろという意味かも知れません。
  しかし、とりあえず動作上は問題無いし、変更して却って問題が生じたら困るので、ProjectSettings⇒Editor⇒SpritePacker⇒Modeを「AlwaysEnabled」はそのままにしておく事にしました。
- Unityを5.6.0に更新しても、まだ、mcs.rspは必要でした。
  Unityを5.6.0でも、まだ、言語バージョンのデフォルト設定は古いままのようです。
- Unityを5.6.0に更新した後、スクリプトをVisualStudio2015で開いてビルドすると、こんな↓警告が出るようになりました。
  ＞1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3268: プライマリ参照 "UnityEngine.TestRunner" は、現在ターゲットされているフレームワークで解決できなかったフレームワーク アセンブリ "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" に間接的に依存するため、解決できませんでした。".NETFramework,Version=v3.5,Profile=Unity Subset v3.5"。この問題を解決するには、参照 "UnityEngine.TestRunner" を削除するか、"System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" を含むフレームワーク バージョンにアプリケーションを再ターゲットしてください。
  ＞1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3268: プライマリ参照 "nunit.framework" は、現在ターゲットされているフレームワークで解決できなかったフレームワーク アセンブリ "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" に間接的に依存するため、解決できませんでした。".NETFramework,Version=v3.5,Profile=Unity Subset v3.5"。この問題を解決するには、参照 "nunit.framework" を削除するか、"System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" を含むフレームワーク バージョンにアプリケーションを再ターゲットしてください。
  Libraryプロジェクトをリビルドしても直りませんでした。
  Unity上でビルドする場合は問題ありません。
  良く分かりません。引き続き、調査中です。
  ⇒{{2017/07/26追記:Unityを2017.1.0f3に更新した所、VisualStudio2017上で、上記の警告は出なくなりました。解決したみたいです。}}
- Library.dllを使わず、Library.csを直接含めても、同じ警告が出ました。
  どうやら、自分のライブラリの問題ではなく、UnityとVisualStudio2015の問題みたいです。
  引き続き、調査します。
- Unity 5.6.0で新しいプロジェクトを作って、空のオブジェクトに新規のC#スクリプトをアタッチして、すぐにVisualStudio2015で開いてビルドしても、上述の警告が出ました。
  やっぱり、完全に、UnityとVisualStudio2015だけの問題です。
  どうしようもないので、当面、無視する事にします・・・
- VisualStudio 2017をインストールしました。
  VS2017の「Visual Studio Installer」で、「Unityによるゲーム開発」を追加インストールすると、VisualStudio 2017用のTools for Unityがインストールされます。
  VS2017では、VS2015までのような、個別のインストーラは無くなったみたいです。
  VS2017にもTools for Unityをインストールしたら、VS2015の時と同じように、例外サポート(試験段階)をTrueにしました。
  VS2017にTools for Unityをインストールすると、UnityのExternal Script Editorで、Visual Studio 2017(Community)が選択出来るようになりました。
- 以上のように、Unityと連携するツールを、VS2015からVS2017に切り替えたのですが、やはり、前述の警告は出たままでした。
  多分、次に、Unity本体かTools for Unityが更新されるまで、解決しないような気がします・・・
//{{2017/04/10コメント削除:VS2017のTools for Unityでも、ProjectFileHook.csはやっぱり必要でした。下記の確認を行った時、間違ってProjectFileHook.csを削除する前に生成されたcsprojを使ってしまっていたようです。やっぱりVS2017のTools for UnityでもProjectFileHook.csをインポートしないと、LangVersionタグが生成されてVS2017上で不要な警告が出てしまっていました。
//- ProjectFileHook.csは不要になりました。
//  VS2017の「Visual Studio Installer」で、「Unityによるゲーム開発」を追加インストールしてインストールされたVisualStudio 2017用のTools for Unityでは、LangVersionは生成されなくなったからです。
//}}2017/04/10コメント削除:VS2017のTools for Unityでも、ProjectFileHook.csはやっぱり必要でした。下記の確認を行った時、間違ってProjectFileHook.csを削除する前に生成されたcsprojを使ってしまっていたようです。やっぱりVS2017のTools for UnityでもProjectFileHook.csをインポートしないと、LangVersionタグが生成されてVS2017上で不要な警告が出てしまっていました。
  ⇒{{2017/07/26追記:Unityを2017.1.0f3に更新した所、VisualStudio2017上で、上記の警告は出なくなりました。解決したみたいです。}}
- /clip/libclip.net/と、/clip/libclip.net/Library/を、両方とも、VS2017でビルドし直しました。
  何も変える必要は無く、全く問題無くVS2015⇒VS2017に移行できました。
  VS2015⇒VS2017は、変化が小さい感じで、移行し易い感じです。
  今後は、全面的にVS2017へ移行して行き、切りの良いタイミングで、VS2015をアンインストールしようと思います。(※TODO:)

* Fri May 19 21:28:18 JST 2017 Naoyuki Sawa
- Unityを5.6.1f1に更新しました。
  特に違いは感じられず、更新に伴う変更は何も行っていません。

* Wed Jul 12 11:09:47 JST 2017 Naoyuki Sawa
- Unityを5.6.2f1に更新しました。
  特に違いは感じられず、更新に伴う変更は何も行っていません。
- Unityを5.6.2f1は、現時点の最新バージョンではありません。
  既に、より新しい「Unity 2017.1.0」がリリースされています。
  しかし、Unity 2017は(たぶん)変更が多すぎると思うので、まだすぐには移行しない事にしました。
  もう少し検証してから、Unity 2017へ移行しようと思います。

* Wed Jul 26 21:49:45 JST 2017 Naoyuki Sawa
- Unityを2017.1.0f3に更新しました。
  メジャーバージョンアップなので、既存のプロジェクトが動かなくなるのではないかと心配したのですが、何も変更しなくてもそのまま動きました。
  /clip/libclip.net/keep/Library/bin/Release/Library.dllも変更せずに使えました。
  また、これまでVisualStudio上で警告が出ていた問題('Sun Apr 09 22:05:18 JST 2017 Naoyuki Sawa'のコメント参照)も、警告が出なくなり解決しました。
- ただし、Unity 2017の新機能を使おうとすると、問題が発生する点が一つ生じました。
  詳細は、以下の通りです。
  Unity 2017は.NET 4.6にも対応しており、プレイヤー設定で切り替える事が出来ます。
    □Unityエディタ上でおこなう手順:
    │Edit⇒Project Settings⇒Player⇒(PlayerSettingsペインが開くので)⇒Other Settings⇒Configuration⇒Scripting Runtime Versionを、初期値「Stable (.NET 3.5 Equivalent)」から「Experimental (.NET 4.6 Equivalent)」に変更する。
    │Restart requiredダイアログが出るので、Restartボタンを押して、Unityエディタを再起動する。
    │先程と同じ設定画面を開いて、先程変更した項目が「Experimental (.NET 4.6 Equivalent)」になっている事，及び，Api Compatibility Levelも自動的に連動して、初期値「.NET 2.0 Subset」から「.NET 4.6」に変わっている事を確認する。
  しかし、実際に上記の手順でNET 4.6に切り替えてみると、以下の実行時エラーが発生しました。
    □実行時エラーが発生した箇所:
    │/clip/libclip.net/keep/Program/src/clipgrp_uni.csのIMoviePlayer.Start()関数内の、
    │typeof(CriManaMovieMaterial).InvokeMember("Update", BindingFlags.InvokeMethod|BindingFlags.NonPublic, null, criManaMovieMaterial, null);
    □Unityエディタ上で確認したエラーメッセージ:
    │MissingMethodException: Method 'CriManaMovieMaterial.Update' not found.
    │at System.RuntimeType.InvokeMember (System.String name, System.Reflection.BindingFlags bindingFlags, System.Reflection.Binder binder, System.Object target, System.Object[] providedArgs, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParams) [0x0089a] in /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/rttype.cs:5017
  .NET 3.5の設定にしている時はエラー無く実行できていたのに、.NET 4.6の設定に変えただけでエラーになったと言うのは、.NET 3.5⇒.NET 4.6でInvokeMember()の機能が何か変わったのでしょうか?
  まだ原因を詳しく調査していないので、原因不明です。
  とりあえず今の所、上記の理由のため、Unity 2017の新機能である.NET 4.6対応は選択しておらず、.NET 3.5のままで使用しています。
