FreelyApps

個人によるアプリ開発の日記です。アプリの収入だけで生活できるようになるのが目標です。UnityでAndroid向けのゲームアプリを作成しています。


    アプリ『トランプ・7並べ』を公開しました。
    Android/iOS https://goo.gl/zsFces

    タグ:Unity5.2

      このエントリーをはてなブックマークに追加 Clip to Evernote
    結構前の話ですが、5.2以降でも通じる話なので書いておこうと思います。

    Unity5.1においてUnity AnalyticsがUnity内部に組み込まれました。これによりアセットストアからSDKを落としてきて組み込むといった手間はなくなり、使いやすくなりました。Project IDというものをWebサイトから取得し、PlayerSettingsで設定するという方法でUnity Analyticsが有効になったと思います。(この記事を見ると、現在は5.1のProject IDはあまり推奨されていないみたいです。またしても5.1ではSDK方式でも対応できるようになっています。)

    Unity5.2以降もUnity AnalyticsがUnity内部に組み込まれているため、SDKは不要です。サービスウィンドウができたため、ここでUnity Analyticsの有効にすることができます。サービスウィンドウに色々なサービスがまとめられたため、やり方が変わったのが5.2です。つまり、使い方が変わっただけで5.1から進歩していません。(内部的には変わっているかもしれませんが……)

    サービスウィンドウを開くと下のようになっています。Unityアカウントにログインしないと何もできないということです。
    sw-start

    ログインすると、新しくProject IDを作るか既にあるIDをリンクするかを選ぶことができます。既にProject IDがあるというのは、古いバージョンのUnityでAnalyticsを使っていたとか、管理サイト上でProject IDを取得したということが考えられます。そのような場合はそのIDを設定すれば良いです。
    sw-start-after-login
     
    Project IDも新しく作る場合(新しいプロジェクトならそのはず)はUnityアカウントの所属する組織を選びます。Select organizationにリストが出るので、適当なものを選びます。そうするとCreateボタンが押せるようになるので押してください。
     
    新しくProject IDが生成され、ウィンドウにProduct Nameが表示されるようになりました。Analytics以外のサービスも設定できますが、今回はAnalyticsのボタンを押して有効にします。
    sw-projectid-created
     
    後は画面に沿ってEnable Analyticsボタンを押すか右上の有効・無効切り替えのトグルを押します。有効化するときに年齢制限の確認が聞かれます。(これはアメリカの法律でCOPPAというものに対応するためのものです。13歳未満の子供の個人情報を収集する際に制限があります。13歳未満対象かどうかをUnityが知るためアプリごととに設定することを求められているのでしょう。)詳細についてはここを見ると良いです。

    以上で設定は終了です。サービスウィンドウ上でもAnalyticsがONになっていることを確認できます。
    この設定が終わったら一度はEditor上で起動しておいてください。これによりPCから管理サイトにAnalyticsの情報を送ります。管理サイト上にValidateチェック用のページがあるので、それを見るとすぐに正しく接続できたかがわかるようになっています。ここらへんは以前と同じです。
    カスタムイベントの集積には最長6時間程度かかるそうなので、6時間待ってからチェックすれば良いです。


    最後に注意点を書いておきます。かなり重要なので、覚えておくとたぶん役に立つでしょう。

    Analytics.CustomEventメソッドはUnity Analyticsが有効にされていないと、「The name `Analytics' does not exist in the current context」というエラーが発生します。
    カスタムイベントのメソッドがエラーを起こすため、自分でカスタムイベントをラップして呼び出しておくのがお勧めです。

    Unityを閉じると、サービスウィンドウで設定したはずのProject IDのリンクが解除されています。内部的にはProjectSettings.assetにProject IDが保存されているためリンクされていますが、ウィンドウ上では新たにはじめる状態が表示されていてIDがなくなってしまったのかと勘違いします。
    ここでCreateしてしまうと新たにIDが増えていくので、「I already have a Unity Project ID」 を選んでリンクするのが通常の使い方だと思います。設定を変えなければ開くことはないかもしれませんが、これは結構驚く挙動です。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    5.2以前ではVisual Studioを使うにはどうなっていたかというと、非常に手間のかかるものでした。
    Visual Studioは使いたい人は自分でVisual Studio Tools for Unity(VSTU別名UnityVSらしいです。)をインストールし、専用のアセットをインポートします。Preferenceの設定が変わってしまうために他のプロジェクトを使う時にいちいちPreferenceの設定を戻したり、アセットをインポートしてVisual Studioが使えるようにしなければならなく面倒です。
    大したことのないことですが、忘れるとうまく動かず「あ~設定し忘れた~」 みたいなことになります。不便なところがあると使いたくなくなるものですし、大勢で開発しているなら結構大きな問題になるでしょう。

    5.2になりVisual Studioが標準的なエディターになるようです。(MonoDevelopは相変わらず付属しています。MacとかLinuxとかありますしね……)これにより改善されていることがあります。
    連係のために必要だったアセットのインポートが不要になります。つまり、インストールするだけで使えるということです。(古いプロジェクトで既にVisual Studioを連携させていた場合アセットのインポート時にUnityVSというフォルダができていたはずです。これは不要になったので消してください。)インポートがなくなったことにより自分の好きなエディターを簡単に使えるようになり、切り替えも自由に行いやすくなりました。(2013と2015の切り替えがPreferenceの設定だけでできます。)
    これについては英語のドキュメントに言及されています。プロジェクトフォルダ内のVSTUではなくVSTUのインストールフォルダから自動で読み込むようになっているらしいです。

    Visual Studioをエディターとして使うにはPreferenceの設定を変更します。External Script Editorの設定を使いたいVisual Studioにします。(下の画像では2013を設定しています。2015でも構いません。)Editor Attachingのチェックをつけておきます。Unityでの設定は以上です。
    v2013
    デバッグの方法は以前と同じですが、うまくいかない場合は「Unity5.2でVisual Studioでデバッグする」の記事を参考にしてみてください。

    Unity Project Explorerがいつのまにか追加されました。
    upe
    Unity Project Explorerを表示に追加することができます。これによりUnityのフォルダ構成をVisual Studioでも表示できるようになりました。Solution ExplorerだとEditorフォルダやPluginsフォルダ等があるといくつかの(Visual Studioの意味で)プロジェクトにわかれてしまい見にくくなります。Unity上と同じように見えると違和感なくVisual Studio上でも作業できるでしょう。
    VSの機能のSolution Explorerでの表示だといくつかのプロジェクトにわかれて表示されます。ビルドしたときのdllごとにプロジェクトがわかれているようです。下の画像だと、Unity.CSharpがC#のスクリプト、Unity.CSharp.EditorがC#のEditorスクリプト、Unity.CSharp.Pluginsがプラグインになります。
    sol

    下のようにUnity Project Explorerの見た目はUnity上のプロジェクトブラウザーの構成と同じです。フォルダが同じになったことでどこにスクリプトがあるのかわかりやすくなります。
    upes

    デバッグ時にブレークポイントで自動的にVisual Studioに移り、処理を抜けるとUnityに戻るというようになっていました。これはいちいちツールを選択しないで流れるように作業ができるので楽です。 たまに反応しないことがありますが……

    今やUnityのスクリプト用の言語はC#ですね。メニューに表示されるボタンにもC#と書いてあるようになりました。 
    opc

    Unity Script(Unity用にJavaScriptを拡張したプログラミング言語)は消えていく運命にありそうです。IL2CPPがあるのでむしろC++が使えるようになる気もしますね。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    UnityとVisual Studioを連携させる」という記事ではUnityでVisual Studioを使ってデバッグができるということを書きました。その時はUnity4.6とUnity5.0での内容だったため、Unity5.2とは大分やり方が異なっています。今回は5.2でVisual Studioを使えるようにする方法について説明します。
    私は以前からVisual Studioでデバッグしていたのですが、今回Unity5.2にアップデートしたところデバッグができなくなってしまいました。後で詳しく書きますが、原因としてはVisual Studio Tools for Unity(VSTU)のバージョンが古かったためでした。スクリプトの編集はできていたので、デバッグもできるだろうと思いこんでいてはまりました。Unity5.2にアップデートしたら、自動でVSTUのバージョンアップしてくれればいいのですが、そうはなってくれませんでした。



    以前からVisual Studioを使っていた人は既にVSTUがインストールされているでしょうからアップデートが必要です。使いたいVisual Studioに対応するVSTUのバージョンアップをしてください。Unity5.2ではVSTUの2.1を要求するので、それ以降のバージョンでないとデバッグできません。(編集は可能ですが、デバッグができません。) VSTUのインストーラをダウンロードして、インストールすると正しく動くようになるはずです。

    none 

    on
    Help->About Unity...を開くと、デバッグできない場合は上の図のように表示されていると思います。正しいバージョンのVSTUがインストールされている場合は下の図のように表示されます。 このようになっていれば、Visual Studioでデバッグできます。

    デバッグの方法は
    buatt
    このAttach to Unityボタンを押してUnityで再生することでできます。

    もしくはDEBUGを選び、
    attau
    メニューからAttach Unity Debuggerを押すと、Select Unity Instanceというウィンドウが開かれます。
    sel
    このウィンドウで対象となるものを選びOKを押します。Unityで再生を行えばデバッグが可能です。

    Attach to Unityボタンを押す方が簡単なので、そちらを利用する方が普通だと思います。 


    新しくUnity5.2から始める人はUnityのインストール時にVisual Studioも入れるか設定できます。VSTUも入るのだと思いますが、試していないのでそれについてはわかりません。
    Help->About Unity...を開いて、VSTUが正しくインストールされているか確認してください。
    520p
     


    MicrosoftのページでVSTUについての記事があったのでリンクを載せておきます。英語ですが、詳しく説明が載っています。
     「Unity 5.2 and Visual Studio Tools for Unity 2.1」と「Native support for VSTU 2.1 in Unity 5.2」が参考になると思います。

    デバッグできない人には「Native support for VSTU 2.1 in Unity 5.2」の一番下にあるChecklistが役に立つので訳しておきます。

    Visual Studioを使用する手順のまとめ
    • Visual StudioとVisual Studio Tools for Unityのバージョン2.1をインストールします。
    • 以前からVSTUを使っている場合、Unity上でUnityVSフォルダがあるはずなのでそれを消します。
    • Unity上でPreferenceのExternal Script Editorを使用するVisual Studioに設定する。
    • Unity上でAbout Unityウィンドウを開きVSTUが有効になっているか確認する。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unityアカウントでログインするためのボタンが5.1くらいから登場しました。これが何の意味があるか良くわからなかったので、今まで放置してきました。
    5.2になることでUnityのサービスがEditor上の雲の形のアイコンのボタン(Cloudボタンと呼ぶことにします)から設定できるようになりました。
    buttons

    Unity Ads、Unity Analytics、Unity Cloud Build、Unity Multiplayerの4つがここから設定できます。(Everyplayはまだ対応していないようです。)これらのサービスを使うにはUnityアカウントが必要です。そのため今まではウェブページを開きログインが必要でした。
    アカウントボタンでログインしている状態でクラウドボタンを押すと、ログインが省かれサービスをすぐに利用できます。Unity Project IDというIDで識別するように統一したようです。(いままではサービスによってはわかれていました。)そんなわけでAccountボタンが役に立つようになります。

    Accountボタンを押すと以下のようにSign in画面になります。この画面はUnityを起動したときに出るログイン画面と同じです。
    signin
     
    Work offlineはログインせずに作業するときに使います。いちいちアカウントを入力しなくても作業はできるので、面倒な人はこれを選択すると良いと思います。ログインしていないとできない作業は特殊なことなので、これがデフォルトで問題ありません。
    Sign inする場合はメールアドレスとパスワードを入力する必要があります。Remember meというチェックマークはUnityを終了してもログインしっぱなしにするためのものです。これをチェックすることで再起動したときにログインした状態になります。 

    Unity 5.2で追加されたCloudボタンを押すとウィンドウが開きます。この新しいウィンドウはServices Windowという名前らしいです。以下ではアカウントに設定されている組織(Organization)を選択しています。(アカウントに組織が複数個登録されていない場合はこの画面のようにはならないかもしれません。私の場合はUnity Adsに登録したときにOrganizationが勝手に増えてしまったので2つあります。)右下のCreateボタンを押すとUnity Project IDを作成し、サービスが使える準備ができます。Createの時点ではサービス用のIDができているだけなので、サービスごとに設定が必要です。
    ボタンの下に水色の文字で「I already have a Unity Project ID」というところがあり、既にIDを作成した場合はこれをクリックして、IDを選ぶことになります。
    cloud
     
    Unity Project IDがプロジェクトとリンクさせられると以下のような編集画面が開きます。プロジェクトの名前はPlayer SettingsにあるProduct Nameが使われるようです。(当然、既に使われているプロジェクト名は使えないので、その場合は~(1)のようにされて登録されます。)
     win

    各ボタンからおのおののサービスを設定したり、ウェブページに飛んだりできます。このウィンドウで色々な設定ができるので便利です。個人的にはブラウザで設定する方が見やすいし、使いやすいと思います。
    もっといろいろなサービスが増えるようになったら、アカウントの統合とかプロジェクトの削除など使いづらいところが改善されていくことでしょう。現時点ではServices Windowを使えることよりもサービスのSDKを入れず使えるようになったことの方がUnity5.2における大きな変化だと思っています。

    ボタンを連打したりして、新しいUnity Project IDを何度も作らない方がいいです。この画面では直接出てこないのでわかりにくいですが、管理ページの方に行って同じプロジェクトのためのIDが何個もあると混乱します。

    • カテゴリ:
      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unity 5.2以前のUnity UIでは文字は4つの頂点で作られていました。今回5.2にアップデートしてみると文字を作るための頂点数が6つに増えていました。一文字表示するのに6つの頂点(2つの三角形)で描画することになります。 
    正確に言うと頂点の数は4つですが、三角形を2回書くために左上と右下の頂点が2回使われます。これで6つの頂点が使われることになります。

    6verts
    画像を良く見ると黒い線が入っています。これはワイヤフレームも表示するようにしたためです。
    一文字につき2つの三角形で構成されているのがわかると思います。3角形ひとつを描くには3つの頂点が必要なので、6頂点で一文字になります。

    頂点の並びは次のようでした。
    vertex
    これはBaseMeshEffectというUIにエフェクトをつけるときに使う基底クラスを使って調べました。頂点の情報をいじることで変形したり、色を変えたりすることができます。
    上の画像では、各頂点に異なる6色を使うようなエフェクトを作り適用しています。ななめに色が分断されているのは面が分かれてしまっているためです。(これにより5.2ではグラデーションをかけるエフェクトをつくるのが面倒になりました。文字のグラデーションのエフェクトを作っている人がいましたので、リンクを張っておきます。さけのさかなのブログより「uGUIでグラデーション文字 その2」)

    Unity5.2以前では、エフェクトをかける基底クラスはBaseVertexEffectというものでした。Unity5.2からBaseMeshEffectというクラスに変わってしまったので、作り方が少し変わります。フォーラムにこのように作れば変更をあまりしなくて良いというのが載っていました。
    以前はvoid ModifyVertices(List<UIVertex> verts);をオーバーライドしていましたが、void ModifyMesh (Mesh mesh);をオーバーライドするように変わりました。MeshからList<UIVertex>をつくるVertexHelperというものができたので、それを使うと以前の書式で書くことができます。
    頂点を直接いじっていたのがメッシュをいじることに変わったので、メッシュから頂点に変換してからエフェクトをかけ、頂点からメッシュに変換するという手順にすれば、以前と同じように使えます。
     

    • カテゴリ:
      このエントリーをはてなブックマークに追加 Clip to Evernote
    9/7の夜にUnity 5.2がリリースされました。今回も色々な変更がされています。
    自分の開発環境でも既にアップデートを行い、5.2.0f3にバージョンが上がりました。
    2

    リリースノートをみると本当に多くのことを行っているのがわかります。全部を見ても仕方ないので、気になったものだけ見るのが役に立つと思います。

    個人的にはUIに追加されたドロップダウンが一番大きいものだと思います。AndroidやiOSなどのモバイル端末では画面が小さいため、オプション画面のように選択肢を並べると画面の大きな領域を使います。
    ドロップダウンは通常は小さいラベルみたいな表示なっていて、押すとリストを表示してその中から選択することができるというUIです。 
    dd
     
     項目を増やしていってもスクロールで対応しているし、ドロップダウンの領域外をクリックしたらドロップダウンを閉じるようになっていました。最近のアプリでよくある処理が組まれているので、使いやすくて良さそうです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unity 5.2が公開されてログの表示が強化されていました。Stacktrace loggingというようです。使い勝手は今のところ実験的な機能というところです。今のところ必要かわかりませんが、詳細を見れるようになったということでデバッグに活用できるかもしれません。

    3種類のログの出力形式を選べるようになります。
    None、ScriptOnly、Fullです。このうちScriptOnlyというのが従来のログと同じ形式です。インストールしたときのデフォルトがこの設定でした。
    コンソールを開き、設定ボタンをクリックします。Stack Trace Loggingという項目があるのでそれを選ぶと、ログの表示形式を選ぶことができます。
    stl


    どのような見た目になるかは以下の画像のようになりました。

    Noneの場合
    simlog

    ScriptOnlyの場合
    nlog
     
    Fullの場合
    stlog

     
    Noneはログがそのまま出ているだけの表示なので、見やすいですが情報が少ないです。余計な情報が出ないのであまり重要でないところではこの表示にしておくとログ全体が見やすくなります。 

    ScriptOnlyは今までの表示と同じです。慣れている人はこの設定が良いでしょうし、表示される情報もちょうどいいので特に気にならなければこの設定が良いです。

    Fullは多くの情報が出ているのがわかります。表示の先頭にある0x~というのはおそらくメモリのアドレスを表しているのだと思いますが、詳しいことはわかりません。(64bit分の表示なので、可能性は高いと思います。)


    現時点で役に立ちそうなのは、Application.stackTraceLogTypeをスクリプトでいじるとログの表示を動的に変えて見やすくすることくらいでしょうか。それをやるにしてもリリースするものにこの処理が入るのは無駄なので、定義を使わなければ駄目かと思います。
    Editorスクリプト用ならリリースに含まれないので、それに活用するくらいかもしれません。 

    このページのトップヘ