nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, 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…

PHP のライブラリ管理ツール Composer で自前のライブラリも自動で読み込む

php

はじめに composer を使ってインストールしたライブラリは、require や import を明示的に呼ばなくても、使用したタイミングで自動でロードされます。 これは composer の autoload 機能を使っており、composer.json に適切に設定することで、自前のライブラ…

Mac で Vagrant を使って Slim の Hello World

はじめに Mac で Vagrant を使って CentOS 環境を立ち上げて、PHP の micro web application framework の Slim で Hello World をするまでのメモです vagrant の CentOS イメージの取得 @Host vagrant box add centos65-x86_64-20131205 https://github.com…

PHP で配列をそれぞれのキーがそれぞれの値になる連想配列に変換する

php

array(1, 2, 5) を array(1 => 1, 2 => 2, 5 => 5) みたいにするということ PHP で Perl の感じで array_map でやろうとしたが array($k=>$v) を返すと多次元配列になってしまうし array_flatten も組み込みでありません array_reduce かわいい

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, …

Mac にしてからテキストエディタ難民だった自分が mi に落ち着くにあたってやった設定メモ

mac

Mac にしてから普通のテキストエディタが見つからなくてずっと居心地の悪い思いをしていた。 プログラミング環境は Vim があるから Sublime Text は買うほどじゃないしな。。 数ヶ月放置してたけど、まじめに mi を調整したら不満なく使えるようになったので…

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…

Unity で ScreenToWorldPoint が常に同じ座標を返す件

以下のコードでマウスの座標がとれるはずだが… Vector3 Position = Camera.main.ScreenToWorldPoint (Input.mousePosition); これが常に同じ座標(メインカメラの座標)を返してきて困った メインカメラのインスペクターのProjectionが "Perspective" になっ…

MacでVagrantを使ってYii Frameworkを動かすまでのメモ

やったこと MacでVagrantを使ってYii Frameworkのプロジェクトとコードジェネレータを動かすところまでのメモ 仮想ホストの環境整備はとりあえず手動 参考サイト http://www.unixmen.com/install-yii-php-framework-on-ubuntu-debian/ 作業メモ 前にVagrant…

Unity 自分用まとめ

はじめに 書籍「ゲームの作り方 Unityで覚える遊びのアルゴリズム」と、それについてくるコードを読みながら Unity の使い方やスクリプトの記法などを自分用にまとめ中。 ゲームの作り方 Unityで覚える遊びのアルゴリズム作者: 加藤政樹出版社/メーカー: ソ…

ドットインストールの「Unity入門」でUnityに入門してみる

はじめに http://dotinstall.com/lessons/basic_unity の勉強メモ Unityのインストール ダウンロード インストール 起動 プロジェクトの作成 [File] > [New Project] [Set] で新しいプロジェクト用のディレクトリを(作成して)指定 [Create Project] で作成 …

cocos2d-x で CCMenu のコールバックメソッドにパラメータを渡すには

はじめに CCMenu でメニューを作る際に、メニューアイテムの数だけコールバックメソッドを書いているのが間抜けすぎたので、メニューのコールバックメソッドにパラメータを渡す方法を調べた。 コード メニューアイテムの作成 "MenuScene"という名前のシーン…

cocos2d-x で時間を扱う

はじめに cocos2d-x で時間処理をしたかったので、 time.h を使う。 勘で "CCDate" でググったら、ライブラリ作っている人はいて、中で time.h 使っていたので、とりあえずこれでやってみる。 // 時間計算ライブラリの読み込み #include <time.h> // UNIX時間型 time</time.h>…