FreelyApps

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


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

    カテゴリ: Unity

      このエントリーをはてなブックマークに追加 Clip to Evernote
    管理をする環境を用意するのが一番大変です。
    作業する準備は色々な方法がありますが、私がやっている手順で説明します。

    Subversionが管理するフォルダを作り、そのフォルダの下にUnityが管理するプロジェクトを作ります。Unity上で設定をすることでバージョン管理に対応したUnityのプロジェクトになります。
    バージョン管理に対応したというのは、元に戻したり、他のパソコンで作業できるようにしたりといったことが対応できるようになります。

    以下で具体的な手順を説明します。
    TortoiseSVNを使うことを前提にします。表示されている画像では日本語パッチを当ててないので、コマンド名は英語です。それ以外のクライアント等は適宜コマンドを変えてください。



    まずSubversionの管理するフォルダを2つ作ります。中身がなければ、どこにあってもかまいません。ひとつはリポジトリ、もうひとつは作業用のフォルダになります。
    リポジトリは作業の全データを保存するデータ置き場と考えてください。

    リポジトリの作成は、
    make-repo.png
    のようにリポジトリにしたいフォルダを右クリックし、Create Repository hereを押します。
    フォルダ構造をどうするか聞かれますが、そのままOKで大丈夫です。(SVNに詳しい人は自分なりの設定で良いと思います。)

    リポジトリができたら、作業用のフォルダを準備します。
    make-work.png
    作業用にしたいフォルダを右クリックして、SVN Checkoutを選びます。URL of repositoryというのがリポジトリの場所を表すので、先ほど作成したリポジトリを指定します。指定したら、OKを押してチェックアウトが完了します。

    作業用のフォルダには「.svn」というフォルダがあるだけになっていると思います。
    これはSVNが管理するフォルダなので、触らないでおきましょう。

    次にUnityのプロジェクトを作成します。
    プロジェクトを作る場所は、先に作った作業用フォルダの下にしてください。
    プロジェクトを作ってUnityを終了させれば、このようなフォルダ構造になっているはずです。

    作業用フォルダ┓
              ┣.svn
              ┗Unityのプロジェクトフォルダ┓
                                 ┣Assets
                                 ┣Library
                                 ┗ProjectSettings

    Unityのプロジェクトフォルダ以下を管理するのですが、このままだとできないのでUnityである設定を行います。Unityでこのプロジェクトを開き、メニューEdit->Project Settings->Editorを選びます。
    open-edit.png
    インスペクタ上で設定項目があるので、以下のようにします。
    Version ControlのModeをVisible Meta Filesにし、Asset SerializationのModeをForce Textにします。
    Version Controlの方は、バージョン管理に必要なmetaファイルを作る設定です。
    Asset Serializationは必須ではないのですが、Unityが作るファイル(シーン、プレハブ、マテリアルなど)をバイナリではなくテキストの形式(YAML)で保存するようにするものです。管理しやすくなるので、Force Textに設定しておいてください。
    versioncontrol-setting.png

    Unityを終了させ、Unityのプロジェクトフォルダ下にあるLibraryフォルダを消します。metaファイルがあれば、それから再作成されますので一旦消してください。

    作業用フォルダに戻り、SVNの管理にファイルを追加します。作業用フォルダで右クリックをし、Addコマンドを選びすべてのファイルを追加してください。
    svn-add.png

    追加が終わったら、右クリックしたメニュー中からSVN Commit...を選んでください。
    以上でUnityの作成したプロジェクトがSVNによって、管理されることになります。



    以下の内容はUnityのプロジェクトをSubversionで管理することの準備以降のことです。

    もう一度プロジェクトをUnity上で起動すると、Libraryフォルダが再度作成されます。SVNで管理する対象ではないので、Libraryは無視リストに入れておきましょう。名前で無視するという設定で良いと思います。

    ファイルが増えたときは、ファイルそのものとそれに対応するmetaファイルを追加してコミットしていってください。metaファイルを忘れると、Libraryフォルダを消したときに復元ができなくなってしまいます。
    定期的にSubversionの管理フォルダのトップで変更の確認かコミットを行えば、漏れがなくなるのでやっておくと良いです。

    Unityの公式ページにもバージョン管理について書いているので、読んでみる価値があります。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unityでスクリプトを編集するときはMonoDevelopが基本です。
    良いところもありますが、私はこれをあまり使っていません。
    JavaScriptやBooでスクリプトを書くならこれでも良いと思いますが、C#の場合はVisual Studioを使う方が好きです。

    コメントを日本語で書きづらいのが、MonoDevelopの最大の欠点だと思っています。
    書けるけども確定するまで表示されないので、わかりにくいです。
    MonoDevelopを使うのは、デバッグのときとちょっとした編集の時です。

    Visual Studioを使うには、
    UnityのメニューのAssets->Sync MonoDevelop Projectを押せばVisual Studio用のファイルが作られます。
    Assembly-CSharp.csprojとか*.slnとかができるので、それを開けばスクリプトの編集が行えます。

    Visual StudioとUnityをもっと連携させる方法もあるようですが、とりあえず使ってみたいなら上記の方法が簡単です。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Android 4.4でimmersive Full-Screen モード(以下、immersiveモードとします)ができたようです。
    以前はフルスクリーン表示といっても、画面下部に戻るボタン等が出ていました。
    これを消し、全画面を利用できるようになるのがimmersiveモードのようです。
    ディベロッパーサイトに使用方法について書いてありました。

    画面下部に出ているボタンを消す必要は、アプリによると思います。
    下の方にボタンがたくさんあるような場合は、ない方が良いです。
    個人的にはあった方が便利なので、あればうれしいです。

    このimmersiveモードはUnity5でアプリを作るとデフォルトで有効になっています。
    それだけなら別に良いのですが、使っているインターステイシャル広告(画面全体にでるもの)を表示すると、ボタンが出てきてしまいます。広告表示後にもボタンが残ってしまうのは、バグのように見えて良くないのです。
    その状態でアプリを残したままメニューに戻り、アプリに戻ってくるとボタンが消えます。
    なんだかバグのような気がしてきます。

    この記事のスクリーンショットの下部に黒いところがあります。これがボタンの領域です。

    現在、Unity5で開発を続けているのですが、この問題があるのでリリースするUnityのバージョンをどうするか悩んでいます。将来的にはUnity5に移行するのは確実なので、微妙なところです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unity Remote 4という機能があります。
    Unityから出ているAndroidアプリを端末に入れて、それとPCで動かしているUnityをつなぐものです。
    PCとつないだ端末にはUnityで実行中のゲーム画面が表示されます。端末からの入力がUnityへ送られゲームを操作することができます。
    スマホで操作と画面の表示を行い、処理をUnityで行うようになります。

    端末にアプリをインストールせずに実機で遊んだときの大体の動きを確認することができます。
    いちいちインストールせずに実行できるのは非常に大きいです。
    インストールはビルドと転送に時間がかかり、繰り返していると効率が悪いです。
    自動で端末にインストールされるような環境を作れば理想的ですが、多少手間がかかります。
    手っ取り早く確認するという点で開発中はUnity Remoteは便利だと思います。

    以下は手順です。
    まずアプリを端末にインストールします。
    インストールしたアプリを起動し、USBケーブルでPCと接続します。
    実行したいUnityのプロジェクトを開き、MenuにあるEdit->Project Settings->Editorを選びます。
    menu.png

    以下のようにEditor Settingsが開くので、Unity Remoteの項目のDeviceをAny Android Deviceにします。
    editor.png

    この設定が終わったら、Unityの再生ボタンを押して実行すれば端末にゲーム画面が表示され、入力することもできます。

    ※うまく動かないこともあり、Unityを再起動したらうまくいくことがありました。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    ロゴを作ろうと思ってペイントソフトを調べていました。
    色々なものが見つかり、すぐに使えるようにはなりそうもありませんでした。
    時間をかけて使えるようになる必要がありそうです。

    ロゴに求めることは以下のことです。
    1.FreelyAppsと表示されている
    2.いかにも手抜きと思われない
    3.ゲームをしたいと思わせられれば

    1があるのでどのように文字を出すかということを考えました。
    絵を描くと難しいので、Unity上でオブジェクトを並べてロゴができないかな~と思って……やってみました。
    アイコン

    シーン上でCubeをたくさん用意し、それが文字列に見えるように配置していくだけです。
    時間はかかりましたが、ライティングがなされたりしてまずまずの見え方になります。
    Cubeの一つ一つにRigidbodyをくっつけたりすると、崩れていくアニメーションができたりします。
    Unity内のゲームオブジェクトなので、色々と制御できるわけです。

    リリースするアプリではアニメーションは使わないと思います。
    使う場合はここで表示しているように静止画を使うと思います。
    それは初期化のところで出すのが最も都合が良いと考えているからです。
    初期化の処理によっては画面が固まってしまうようなことがあります。
    それでも不自然にならないためには、画面が止まっていなければなりません。
    したがって、もったいないですが絵として保存したものを実際には使用することになります。

    私としては、結構うまくいったというところですが、いかがでしょう。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Google アナリティクスの機能としてHTTPリクエストを送ることでデータを集計することができます。Measurement Protocolというものです。
    これを使うとUnityからHTTP リクエストを送信してGoogle Analyticsに情報を送ることができます。Unityで作ったゲームを何らかのSDKを使わずにスクリプトだけでGoogle Analyticsと連携させることができるということです。

    UnityではWWWクラスを使うと簡単にHTTPリクエストが送れます。
    WWW www = new WWW(URLを文字で書く);
    というようにするだけでアクセスできます。

    Measurement Protocolが要求するURLを作成し、
    WWWクラスにそれを渡せば、Google Analyticsで統計がとれるはずです。

    実際に試してみたのですが、
    管理画面でアクセスがとれていません。
    通信は成功しているようでレスポンスがあります。

    私にはお手上げです。
    もう少し調べてみようと思いますが……

    【追記】
    解決しました。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unityにはリッチテキストという機能があります。
    文字列にHTML風のタグを入れるとそれを解釈して、表示してくれる機能のとこです。

    たとえば、
    <color=red>赤色になる</color>
    というようにすると、
    赤色になるというように赤色になって表示されます。

    <size=50>大きさを指定した</size>
    というようにすると、
    50ピクセルで表示されるようになります。

    この指定はUIの要素のプロパティで指定した値よりも優先されます。
    UI.Textコンポーネントのフォントサイズを80にして、
    <size=100>で他の部分より大きくすると初めの文字だけ大きくする表現ができます。

    私が失敗したのは、Canvas Scalerの設定で画面の大きさ次第でスケールがかかるようにしていた時のことです。
    スマホの解像度はかなり差があるので、画面ごとに合うように縮小・拡大が自動でされるように指定しています。
    そのため、画面の解像度が高くなったときにピクセル数の指定が意図どおりにならないことがあるのです。
    100ピクセルの大きさで指定しても、解像度がいくつの端末で見るかによってかなり異なります。
    1920x1080と960x540の端末で見比べれば、2倍の差があることになります。

    基準となる解像度で何ピクセルになるべきかを決め、
    現在の解像度に合わせてピクセルを変更すれば良いことになります。

    ここでは縦幅を基準にして、横幅の変化は考えないことにします。
    1920x1080で100ピクセル分の大きさにしたいのであれば、
    "<size=" + (100 * Screen.height / 1920) + ">"
    という文字列を作り、
    スクリプトから設定するということをすれば、どのような解像度の端末でも同じような見た目になります。

    計算で求めて対処できますが、
    素直に新しいTextコンポーネントを用意し、そのフォントサイズを変更する方が楽で良いと思います。 【文字の大きさを変えるときの注意点】の続きを読む

      このエントリーをはてなブックマークに追加 Clip to Evernote
    UnityのUIは4.6から今の形になりました。
    この仕組みは正式名称でUnity UIと言います。リリース前はuGUIと呼ばれていたのでuGUIで説明されている場合や新GUIと呼ばれる場合もありますが、いずれも古い呼び方になります。

    それまではスクリプトから呼び出す、関数の呼び出しでUIを作るか、
    GUITextureといったコンポーネントをつけて作ることになっていました。
    ただUnityのエディタ上で直感的に作り、処理も軽いということができていませんでした。

    NGUIという有料のアセットが最も使いやすく有名でしたが、
    95$という値段がしました。
    また、細かい制御をするには結構マニュアルを読まないといけなくて、大変でした。
    処理はモバイルでも動くくらい軽量で、スマホにリリースするにはNGUIしかないというくらいでした。

    Unity4.6でUIが強化されたことにより、
    Unityでアプリを作っていくことができると思いました。
    UIをなくすというのは、ほぼ考えられないので、UIを作ることが楽であることは重要です。
    これからもっと使いやすくなることを願っています。

    今のところマニュアルが英語のものしかないので、日本語のものがほしいです。
    ここに公式ページでのチュートリアルビデオがあるので、これを見て学ぶのが良さそうです。
    英語ですが、頑張って聴けばなんとかなる……はず。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Android向けのゲームを開発するためにUnityを使っています。
    バージョンは4.6.1.f1。

    現在は4.6.2が出ているようです。
    バグの修正が主なようなので、すぐに上げなくても開発に支障はないかなーという印象。
    まあ、リリースするときには上げた方が良いわけですが……
    なぜかうまく動かない時があったりして、作っているときにあまりやりたくないのです。
    Unityが動かない原因を調べたりして、時間が作ること以外に使われてしまいます。

    そんなわけで新機能とか自分のところで起きた問題の解決に即つながるような更新でなければ、
    すぐに更新したくないというのが本音です。

    このページのトップヘ