Unity5あれこれ
Sceneに配置したTextの中身をスクリプトで変更する(uGUI対応)
1. 空のGameObjectを追加
2. 以下のような内容のスクリプトを作成し、UnityのEditor上で1のGameObjectにアタッチする
public Text hogeText; void Start() { debugText.text = "hage"; }
3. UnityのEditorのHierarchy上で右クリックからUI→Textと選択
4. 1のGameObjectを選択して、3のTextをhogeTextにドラッグアンドドロップして関連付ける
5. UnityのEditorでプレイボタンを押すとTextの表記がhageに変わる
WebViewプラグインを用いて表示したHTMLから送られてきた値を取得する
- Gree社謹製プラグインを使用。
- 以下のようなスクリプトを空のGameObjectにアタッチ
WebViewObject wvo; string htmlFilePath; void Start() { htmlFilePath = Path.Combine(Application.persistentDataPath, "sample.html"); WriteHTML(); wvo = (new GameObject("WebViewObject")).AddComponent<WebViewObject>(); wvo.Init((msg) => { hogeText.text = msg; if (msg == “hoge”) { // Nextという名前のSceneに遷移 Application.LoadLevel("Push"); } }); wvo.LoadURL("file://" + htmlFilePath); wvo.SetMargins(15, 150, 15, 20); wvo.SetVisibility(true); } void WriteHTML() { using (var writer = new StreamWriter(htmlFilePath, false)) { writer.Write( @"<html> <body> <ul> <li><a href='unity:hage'>callback 'hage'</a></li> <li><a href='unity:hoge’>callback ‘hoge’</a></li> </ul> </body> </html> "); writer.Close(); } } }
Unity5が来た!
AssetBundle関連
“The AssetBundle ‘◯◯◯’could not be loaded because it is not compatible with this newer version of the Unity runtime.
Rebuild the AssetBundle to fix this error.”
やっぱりか…(;´Д`)
Unity5のほうでAssetBundleビルドを行った後、再度AssetBundleのロードを試みるも、再び上記のエラー発生。
WWW.LoadFromCacheOrDownLoad()に渡すversionの引数をインクリメントすると、無事に新しいものがロードされるようになった!
(ローカルにUnity4時代のAssetBundleが残っていて、そちらをロードしようとしていたのが原因)
Unityあれこれ
ローカルのUnityプロジェクトが最新にならない
チーム開発等でUnityのプロジェクトを最新にしても、ローカルのAssetが古くて挙動がおかしいことがあった。
以下の手順で解決。
- Unityを終了
- プロジェクト直下のLibraryディレクトリを丸ごと削除
- Unityを起動
Canvas以下に置いたTestTextというコンポーネントを探して、テキストを変える
int number = 0; var canvas = GameObject.Find ("/Canvas"); foreach (Transform child in canvas.transform) { if (child.name == "TestText") { Text target = child.gameObject.GetComponent<Text> (); target.text = "hoge" + number.ToString (); } number++; }
GameObjectの表示/非表示切り替え
- SetActive() を使う
- 非アクティブ化されたGameObjectを取得できるFindDeep() を使う
- 第二引数にtrueを渡すと非アクティブなGameObjectも検索対象になる
bool isActive = false; gameObject.FindDeep ("MyChunoText", isActive).SetActive (isActive);
Modelとテーブルを追加する
追加したいテーブル
CREATE TABLE `hchuno_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` int(11) DEFAULT NULL, `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `version` int(11) DEFAULT NULL, `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
手順
Active Recordを使ってModelを生成
$ rails generate model hchuno_items code:integer name:string version:integer
invoke active_record
create db/migrate/20150205000000_create_hchuno_items.rb
create app/models/assetbundle_master.rb
invoke rspec
create spec/models/hchuno_items_spec.rb
invoke factory_girl
create spec/factories/hchuno_items.rb
マイグレーションを実行してテーブルを追加
$ rake db:migrate
(in /Users/hchuno/projects)
== 20150205000010 CreateHchunoItems: migrating =========================
- create_table(:hchuno_items)
-> 0.0399s
== 20150205000012 CreateHchunoItems: migrated (0.0400s) ================
コルーチン関連
処理内容
- ボタンを表示
- ボタンを押すと指定したSceneに遷移
- 裏で、指定したURLに接続
ソースコード
using UnityEngine; using System.Collections; public class Title : MonoBehaviour { void OnGUI () { if (GUI.Button(new Rect(Screen.width/2 -100 , 100, 200, 50), "GAME START")) { Application.LoadLevel("particles"); StartCoroutine("LoadData"); } } private IEnumerator LoadData() { string url = "http://localhost:3000"; WWW hoge = new WWW(url); while (!hoge.isDone) { yield return null; } } }
日本語配列キーボードなMacBook Proに行った設定
概要
職場で日本語配列キーボードのMacBook Pro(以下、MBP)が支給された。
US配列キーボードのものが欲しかったのだが、あまり贅沢は言えず。
とは言え、普段慣れ親しんでいるのはUS配列のキーボードなので、極力そちらに近づけたほうが良いということで、色々と試してみた。
各種設定
ThinkPadのUS配列USBキーボードを使用
MBPに接続して認識させた後、システム環境設定の「キーボード」にて少々キーバインドを変更する。
メリット
- ほぼUS配列キーボードのMBPと同じ挙動
- トラックポインタが使える
デメリット
- MBPの占有スペースが無駄
- MBPのトラックパッドが使えない
- 持ち運びにくい
キーバインディング変更ソフトを使用
- Karabiner - OS X用のソフトウェア
- 以前は「KeyRemap4MacBook」という名で知られていたソフト。OS X10.9から名前が変わった模様。
- 言語に応じた細かい設定も可能になっており、「For Japanese」→「Change Keyboard Layout」とたどると以下の様な項目があった。「USE Japanese Kyeboard as US Keyboard」という項目もあったのだが、いまいち期待した挙動にならなかったため止めておいた。
メリット
- 場所を取らない
- トラックパットが使える
- 持ち運びしやすい
デメリット
- ThinkPadキーボードと比べるとキー配列に違和感が残る
- 表記と異なる挙動をするキーが存在する(普段の慣れに頼るしかない)
最終的な設定
- かなりUS配列の挙動に近づいた!
- 各キーの表記に釣られてしまうので、無刻印キーボードのつもりで慣れるしかない…
結論
「腰を据えて使うときはThinkPadキーボード、持ち運ぶときはMBP単独」という使い分けができるようになっただけでもデカい。
rails console が動かなかった件
$ rails console /home/vagrant/.rbenv/versions/2.1.5/lib/ruby/2.1.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
「readlineが無い」ということなので、rb-readlineをインストール。
$ gem install rb-readline
Gemfileを開いて、
gem ‘rb-readline’
を追記。
その後、bundle installを実行。
$ bundle install
再度、rails console を実行したら無事に動いた。