nirasan's tech blog

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

Unity

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…

Unity の NGUI で画像を実行時に変更する

画像を変更する UISprite のアタッチされたオブジェクトの画像を変更する UISprite.spriteName に Atlas の Sprite 名を文字列で指定すると画像を変更することができます。 obj.GetComponent<UISprite> ().spriteName = "new_sprite_name"; ボタン画像を変更する UIBut</uisprite>…

Unity の NGUI v3.5.6 で Atlas を新規作成する

2014/11/18 追記 NGUI v3.7.4 では(もっと前からかもですが) Atlas Maker にある New ボタンから新規作成できるようになっていたので、以下の手順は古いです。 はじめに Unity のGUI作成ツールアセットの NGUI v3.5.6 を使って、Atlas(複数の画像を1枚の…

Unity で NGUI を使ってポップアップウィンドウを作る

はじめに Unity の GUI 作成ツール NGUI を使って、下からぴょこんと出てくるポップアップウィンドウを作ります。 Unity のバージョンは 4.3.4 で、NGUI は 3.5.6 を対象とします。 所要時間は10分程度です。 準備 NGUI をアセットストアから購入します。 プ…

Unity の NGUI で子要素の表示位置がおかしくなる件

// プレハブのUIオブジェクトをUIRootの子要素に追加して、、 GameObject label = NGUITools.AddChild (UIRoot, UILabelPrefab); // 表示位置を変更しようとすると、(19400, 19400, 0) とかになってびっくりした。 label.transform.position += new Vector3 …

Unity で時刻の取得と保存

はじめに Unity での時刻の処理は System.Datetime を使う 時刻の取得 // 現在時刻の取得 System.DateTime now = System.DateTime.Now; // 任意の時刻のDateTime取得(年、月、日、時、分、秒、タイムゾーン) System.DateTime date1 = new DateTime(2010, 8, …

Unity で NGUI v3.5.6 を使ってボタンを作る

はじめに Unity の GUI 作成ツール NGUI の v3.5.6 を使ってボタンを作ったメモ。 NGUI はバージョンによってUIとかが結構違ったりしているので、How to 記事を参照する際には注意が必要です。 購入 Unity のメニュー [Window] > [Asset Store] でアセットス…

Unity で作ったアプリを Android 実機で動かす

はじめに Unity が入っただけの状態から Android 実機でアプリを動かすところまで試してみた。 所要時間 1時間程度 必要なもの mac or PC Unity Android 実機 手順 http://tech.gmo-media.jp/post/52903538536/create-android-game-with-unity これの通りに…

Unity で作ったアプリを iPhone 実機で動かす

はじめに Unity が入っただけの状態から iPhone 実機でアプリを動かすところまで試してみたました。 所要時間 1時間半程度 必要なもの mac Unity iPhone 9000円弱 (iOS Developer Program 登録のため) 手順 流れとしては、1.iOSアプリを実機で動かすために手…

Unity で任意の直線上のオブジェクトを検索して処理する

はじめに Unity で任意の直線上のオブジェクトのリストが欲しい場合は Physics.RaycastAll を使います これは任意の座標から任意の方向に光線を発射し、当たったオブジェクトを返してくれる的なものです コード // 任意の座標から任意の方向に光線を発射し、…

Unity で実行時にマテリアルを追加する

はじめに Unity で実行時にマテリアルを追加したい場合の対応方法です。 具体的にはプレハブは使い回したいが、特定の条件のときだけ画像を追加で貼付けたかったのでやってみました。 参考URL http://answers.unity3d.com/questions/26640/adding-a-new-mate…