nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

Unity

Unity でネイティブプラグインを使って ActivityIndicator の画像変更と画面中央での表示(iOS編)

はじめに Unity でネイティブプラグインを使って ActivityIndicator の画像変更と画面中央での表示(Android編) - nirasan's tech blog にひき続いて iOS 編 基本的に http://tsubakit1.hateblo.jp/entry/2014/08/19/010141 こちらのとおりです。 iOS 側の…

Unity でネイティブプラグインを使って ActivityIndicator の画像変更と画面中央での表示(Android編)

はじめに Unity で OS ネイティブの読み込み中アニメーションを表示するメソッドとして Handheld.StartActivityIndicator がある。 これは Android では画面左上に表示されてしまうので、画面中央に表示させられるようにネイティブプラグインを作ったメモ。 …

NGUI の UITweener の Animation Curve に任意の曲線を設定する

はじめに Unity + NGUI で TweenPosition や TweenAlpha などの UITweener を継承したコンポーネントで Animation Curve の曲線をプログラムから設定する方法についてメモ。 バージョン Unity 4.6.1f1 NGUI 3.7.6 設定方法 Animation Curve の曲線は Animati…

NGUI で UILabel の文字量に従って縦幅だけ変動させるスクリプト

using UnityEngine; using System.Collections; /// <summary> /// UILabel の横幅を固定して text に従った縦幅に設定するスクリプト /// </summary> public class UILabelHeightFitter : MonoBehaviour { /// <summary> /// リサイズ対象の UILabel /// </summary> public UILabel label; private…

NGUI の ScrollView で気持ちのいいスクロールを実装する

気持ちが良いスクロールとは? 今回は「ちょっとスワイプするだけで次の要素にスッと切り替わる」ものを実装する。 バージョン情報 Unity 4.6.1f NGUI 3.7.6 ヒエラルキー UI Root ScrollView Grid ScrollView の作成 メニューの [NGUI] > [Create] > [Scrol…

Unity Ads 導入メモ

やったこと Unity Ads のサイトにアカウント登録 Unity Ads でアプリの登録とID取得 Asset Store から Unity Ads のインポート 広告の呼び出しスクリプトの作成と実行 参考サイト 最初の3つは http://qiita.com/hiroyuki7/items/ac607e3df11101b0c90a を参考…

Unity でユーザーデータをJSONにシリアライズして暗号化して保存する

はじめに Unity でユーザーのデータを保存したい場合、最も手軽なのは PlayerPrefs だが、List が使えなかったり平文だったりして不便な面もある。 今回はユーザーデータを LitJSON でシリアライズして、永続データ領域に保存。保存時に暗号化、読み込み時に…

2D Roguelike を試してみて使いまわせそうなイディオム

はじめに Unity のチュートリアル 2D RogueLike が気になったので、試してみて使えそうなイディオムをいくつかメモ。 ゲーム自体は、矢印で移動、移動する毎にfood減少、アイテムでfood増加、敵の攻撃でfood減少、階段で次の階へ、アイテム・壁・敵は階ごと…

Unity で iOS ビルド時に Framework の自動追加・画像の自動追加・任意のファイルの登録・URL Scheme の設定をする

はじめに Unity で PostprocessBuildPlayer を使ってタイトルのようなことをする。 掲載のコードはGAMEFEATのSDKを組み込んだときのもの。 ruby から XCode を操作する gem のインストール http://starzero.hatenablog.com/entry/2014/02/18/163330 を参考に…

Unity で Parse Config を使いアプリの設定をリモート管理する 〜 例えば審査中だけアプリの挙動を変化させる

はじめに Parse.com の Parse Config を使うと、アプリの設定を手軽にリモートで管理することが出来、例えば審査中だけ特定の GameObject を表示させないなどの処理が書きやすくなります。 Parse Config は単純なキーバリューストアで、以下のような型が扱え…

NGUI の ScrollView 内のアイテムをドラッグアンドドロップで並び替える

はじめに Unity + NGUI 環境で ScrollView 内のアイテムをドラッグアンドドロップで並び替えられるように 構成 ゲームオブジェクトの親子関係とアタッチするコンポーネント Scroll View (UISCrollView, UIDragDropRoot) Grid (UIGrid) Item (BoxCollider, UI…

Voxel モデルを作って Unity で使ってみた

Voxel とは volume のある pixel ということで、3D のピクセルアート的なもののことだそう。 http://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%AF%E3%82%BB%E3%83%AB Voxel モデルを作るには Qubicle というソフトを使って Voxel を作成し、Qubicle の Unity …

UnityでAndroidとiOSのアプリ間連携機能を使ったシェア機能の実装

はじめに Unityでアプリ間連携機能を使ったシェア機能を実装します。 Androidでは暗黙的インテントを、iOSではUIActivityViewControllerを利用します。 Unityでのシェア機能実装 任意の処理から下記スクリプトのShareメソッドを呼び出しシェア機能を起動しま…

NGUI でインターネット上の画像を表示するには

WWW で画像を読み込み、UITexture で表示する。 サンプル 以下のスクリプトを任意のオブジェクトにアタッチして実行する。 using UnityEngine; using System.Collections; [RequireComponent(typeof (UITexture))] public class LoadTextureFromWWWSample : …

NGUI で ScrollView の描画順を調整する

NGUI で ScrollView の描画順を調整するには ScrollView オブジェクトに UIScrollView と一緒にアタッチされている UIPanel の SortOrder と Depth の値を変更する。 SortOrder はおおもとの描画順で、Depth は同一 SortOrder の要素同士の描画順を指定する…

Unity + NGUI + iOS でも Atlas のテクスチャサイズが大きすぎるとやっぱり死ぬ問題

はじめに 前回と同じアプリをiOS環境でビルドしようとしてエラーが発生した件。 Unity + NGUI の環境で iOS のビルドをしようとしたとき、4096x4096 のテクスチャを使った Atlas を2枚があるとエラーが発生してビルドできない。 エラーメッセージ 以下のよう…

Unity + NGUI + Android で Atlas のテクスチャサイズが大きすぎると死ぬ問題

はじめに Unity + NGUI の環境で Android 実機で起動したとき、4096x4096 のテクスチャを使った Atlas を2枚使おうとすると再起動がかかる。 エラーメッセージ 以下のような感じで android.os.DeadObjectException とかいうのが出る。 W/InputMethodManagerS…

Unity で iOS 実機だと Update 中に GetComponent するとたまに一瞬固まる問題

問題 題名の通り。 Unity Editer や Android で動かしている分には気がつかなかった。 同じ処理でも固まったり固まらなかったりする。初回はだいたい固まるのでキャッシュしてくれているのか。 対策 問題の箇所では Prefab を Instantiate して、作成した Ga…

NGUI の UIScrollView で1要素分スクロールさせるスクリプト

はじめに Unity の NGUI で UIScrollView を使うと、要素を列挙してスクロールして表示させるようなパーツが簡単に実装できます。 列挙する要素に UIDragScrollView コンポーネントをアタッチすると、ドラッグでスクロール可能ですが、今回は1要素分だけ進…

Unity で Google Analytics を使う

はじめに Unity で Google Analytics を使ってログ集計をする。 http://qiita.com/yimajo/items/0861a79e741cbd463179 こちらのサイトを主に参考にした。 Google Analytics の Unity 用プラグインのβ版が公式から出ているが、なんかうまくログを送信できなか…

Unity + NGUI でスワイプをしたときに処理を実行するスクリプト

はじめに Unity + NGUI でスワイプしたときに処理を実行するスクリプトを実装したメモ。 スワイプ終了時と、上下左右のスワイプにそれぞれひもづけて、実行するメソッドを登録できる。 スワイプしたときに処理を実行するスクリプト Collider のアタッチされ…

Unity で Parse.com を使う - オブジェクトの CRUD 編

参考サイト https://parse.com/docs/unity_guide 登録 GameScore クラスのオブジェクトを作成する // オブジェクトの作成 ParseObject gameScore = new ParseObject("GameScore"); // カラムにデータの登録 gameScore["score"] = 1337; gameScore["playerNam…

NGUI の UIGrid で Sort をカスタマイズする - 名前の降順・名前を数字で評価して降順

はじめに Unity の NGUI でリストを表示するとき、UIGrid を利用すると簡単に実装できる。 Sort 順を既存の "追加順の昇順(None)"、"名前の昇順(Alphabetic)" 意外にしたい場合に対応したメモ。 並び替え評価用の関数を宣言する UIGrid.cs にある既存の並び…

Unity で二つの値の間を行き来する値の取得方法2種類

Mathf.PingPong t を基準にして 0 から length までの値を返す 返り値の例 Debug.Log (Mathf.PingPong(0f, 3f)); //=> 0 Debug.Log (Mathf.PingPong(0.5f, 3f)); //=> 0.5 Debug.Log (Mathf.PingPong(1f, 3f)); //=> 1 Debug.Log (Mathf.PingPong(2f, 3f)); …

Unity でマスターデータを Excel で管理する

はじめに Unity-Excel-Importer-Maker というライブラリを使用して、Unity でマスターデータを Excel を使って管理する方法を確認したメモ。 Unity-Excel-Importer-Maker のインストール https://github.com/tsubaki/Unity-Excel-Importer-Maker から "Downl…

Unity & NGUI でタッチやスワイプのイベントを取得する

はじめに Unity & NGUI で、パズドラやポコパン的な、オブジェクトを選択してなぞるアクションをした場合のイベント取得方法をまとめました。 コード UISprite と Box Collider と下記のスクリプトをアタッチしたゲームオブジェクトを、複数個シーンに配置し…

Unity に nend の広告を組み込む - iOS 編

はじめに Unity に nend の広告を組み込む - Android 編 - nirasan's tech blog が終わっている前提で、iOS での広告表示を行います。 iOS アプリ作成 apple の開発者サイトの Member Center から、Certifications, Identifiers & Profiles に移動 Identifie…

Unity で Android のビルドができない問題2件

はじめに Google Play Games パッケージのインストール後に発生? 1件目 エラーメッセージ Error building Player: Win32Exception: ApplicationName='/PATH/TO/ADT/adt-bundle-mac-x86_64-20131030/sdk/tools/zipalign', CommandLine='4 "/PATH/TO/PROJECT/…

Unity に nend の広告を組み込む - Android 編

nend への登録 http://nend.net/ から nend 上でアプリと広告枠の作成 nend のマイページから nend SDK の組み込み マニュアルの通り AndroidManifest.xml のひな形は /Applications/Unity/Unity.app/Contents/PlaybackEngines/AndroidPlayer からコピー 広…

Unity でドット絵画像がぼやけるの対策

対策 Unity の Sprite でドット絵を表示しようとしたところ、ところどころぼやけてしまう。 画像のインスペクターで "Format" を "Compressed" から "Truecolor" にしたら正常に表示されるようになった。 参考サイト http://answers.unity3d.com/questions/3…

Unity でホーミング弾的なものの実装

はじめに プレイヤーに向けて移動するホーミング弾的なものの実装 Vector3.MoveTowards は2点間の特定の位置を返すので、プレイヤーの座標と弾の座標を指定して、Update 毎に距離を詰める コード public class Bullet : MonoBehaviour { void Update () { Ga…

Unity で拡張メソッドと静的コンストラクタを使った enum 文字列変換の高速化

はじめに Unity の C# スクリプトで列挙型から文字列への変換は ToString メソッドでできるが遅いらしい そこで、静的コンストラクタで列挙型から文字列に変換しておいて、拡張メソッドで変換した文字列を参照するようにしてみた 宣言 using UnityEngine; us…

Unity で Parse.com を使う - 初期化からユーザー登録とユーザーログインまで

はじめに Unity で MBaaS である Parse.com を使ったアプリの作成から、ユーザーの登録とユーザーログインまでを行ったメモ。 Parse.com の登録とアプリの作成 Parse.com への登録は https://www.parse.com/ の Sign Up から。 ユーザー登録をすると、そのま…

Unity で List を string に変換して PlayrePrefs に保存する

List を string に変換するコード using UnityEngine; using System; using System.IO; using System.Collections; using System.Runtime.Serialization.Formatters.Binary; namespace MyUtils { public class SerializeUtils { public static string Serial…

Unity で Android のネイティブクラスのクラス変数の値を変更する

// Android のネイティブクラスの取得 AndroidJavaClass ajc = new AndroidJavaClass("com.example.SomeClass"); // public static int な変数の値を変更 ajc.SetStatic<int>("someStaticInt", 123); // public static String な変数の値を変更 ajc.SetStatic<string>("so</string></int>…

Unity で iOS のローカル通知を実装

はじめに Unity で iOS のローカル通知を実装する。 Android とは違って、iOS ネイティブの通知機能のラッパーが Unity 側で実装されているので、これを呼び出すだけでよい。 前回の Android 版と同様に、アプリが非アクティブになったら、一定時間後にロー…

Unity で Android ネイティブプラグインの実装 - 一定時間起動していない場合にローカル通知を出すバックグラウンド処理の実装

はじめに 前回に引き続き Unity での Android ネイティブプラグインの実装 今回は、アプリ起動後に非アクティブにしたまま一定時間が経過したら、ローカル通知を出して呼び戻す機能の実装。 プラグイン側の実装 バックグラウンドで実行される Service を実装…

Unity で Android のネイティブプラグインの実装 - ローカル通知を送信する

はじめに Unity で Android のネイティブプラグインを書いてみた記録。 ネイティブプラグイン作成環境を構築し、実際にローカル通知を出すプラグインを作成した。 ネイティブプラグイン作成環境構築参考サイト http://qiita.com/relzx/items/a35f7ab6dbacb48…

Unity で状態遷移のために有限オートマトンの実装

はじめに ゲームオブジェクトの状態遷移処理を毎回 Update とかに書いていたので、https://github.com/thefuntastic/Unity3d-Finite-State-Machine を参考に有限オートマトンを実装した。 有限オートマトンクラス 状態を管理するクラス 状態を管理したいオブ…

Unity で Observer Pattern

はじめに Unity で Observer Pattern を実装したメモ http://www.gamasutra.com/blogs/DarrelCusey/20130829/199271/A_Simple_Observer_Pattern_for_Unity_42.php を参考に、MonoBehaviour を継承しなくても使えるようになどの変更をした ついでに Unity Tes…

Unity 2D と NGUI で横幅を固定する

はじめに Unity の 2D 表示と NGUI では、ともに画面の縦幅を固定するオプションはあるが、横幅を固定することができないので、スクリプトで対応したメモ。 バージョン Unity 4.3.4 NGUI 3.5.6 Unity 2D で横幅を固定する 以下のスクリプトをシーン上の任意…

Unity で DeployGate を使って開発中のアプリを配布する

はじめに Unity で作ったアプリを iOS と Android で動作確認するために DeployGate を使います DeployGate の登録 https://deploygate.com/ からユーザー登録をしてください Android アプリの配布 まずは、Unity 側で apk ファイルを作成します 手順は http…

Unity & NGUI でセレクトボックス的なあれ

はじめに Unity の GUI 拡張 Asset の NGUI を使って、HTML のセレクトボックス的なものを作るには、UIPopup List というコンポーネントを使います。 NGUI v3.5.6 だと、"NGUI/Examples/Scenes/Example 10 - Localization" というシーンで使い方を確認できま…

Unity での iOS アプリ内課金結果をサーバーサイドで検証する

はじめに Unity で iOS のアプリ内課金をした際に、サーバーサイドでの課金内容チェックをしたメモ。 Unity でのアプリ内課金には prime31 の iOS StoreKit In App Purchase Plugin を使用。 サーバーサイドは PHP を使用。 Unity 側 prime31 の iOS StoreKi…

Unity で Sprite sheet をスクリプトで扱うメモ

Sprite sheet = Texture Type: Sprite かつ Sprite Mode: Multiple な画像 // Sprite sheet から Sprite の一覧を取得する Sprite[] sprites = Resources.LoadAll<Sprite> ("SPRITE_NAME"); // Sprite を動的に変更する GetComponent<SpriteRenderer> ().sprite = sprites [0]; // Sp</spriterenderer></sprite>…

Unity + TexturePacker で Sprite Sheet を作る

バージョン Unity 4.3 TexturePacker 3.3.4 TexturePackerImporter 3.3.2 Unity 側準備 任意のプロジェクトを作成 Asset Store から TexturePackerImporter をダウンロードしてインポート TexturePacker 側準備 TexturePacker をインストールして起動 画面右…

Unity + NGUI + FacebookSDK + JSONObject で Facebook のフレンドのプロフィール画像を表示する

はじめに Unity, NGUI(v3.5.6), FacebookSDK, JSONObject がインストールされている環境で、Facebook のフレンドのプロフィール画像をダウンロードして表示したメモ コード /** * Facebook のフレンドのプロフィール画像を表示する * 任意のボタンのOnClick…

Unity で Android In App Billing Plugin を試す

はじめに Unity の Android 用アプリ内課金プラグインとして実績のある prime31 の Android In App Billing Plugin を使って見たメモです。 公式ドキュメント URL https://prime31.com/docs#androidIAB メモ Google Developers にサインインしているアカウン…

Unity の NGUI でボタン押下時に HTTP 通信をする

はじめに Unity で NGUI(v3.5.6) と WWW を使って、ボタン押下時に HTTP 通信をする 準備 [NGUI] > [Create] > [2D UI] で NGUI の準備 アセットから "simple button" でボタンのプレハブを検索し、ヒエラルキーにドラッグアンドドロップ スクリプト作成 usi…

Unity で HTTP 通信をする

はじめに Unity で HTTP 通信をするには WWW クラスを使います。 コード 下記のスクリプトを任意の GameObject にアタッチして再生すると HTTP 通信が実行されます。 HTTP 通信をするメソッドの返り値の型を IEnumerator にするのと、そのメソッドを StartCo…