2014年11月23日日曜日

[Unity]EasyTouchを使う

Unity 4.6.0b20
EasyTouch 3.1.10
  1. EasyTouchをインポート
  2. pluginsフォルダはプロジェクトのルートになければならない
  3. ツールバー > Tools > Hedgehog Team > EasyTouch > Add EasyTouch for C#
    HierarchyにEasyTouchが追加される
  4. HierarchyのEasyTouchを円卓Auto-SelectProperties > Pickable LayersをDefaultにする
  5. タップしたいオブジェクトに以下のコードのスプリクトを追加
    オブジェクトにはColliderが必要
using UnityEngine;
using System.Collections;

public class TapSample : MonoBehaviour
{
 //シングルタップを登録
 void OnEnable()
 {
  EasyTouch.On_SimpleTap += On_SimpleTap;
 }
 
 //登録の解除
 void OnDisable()
 {
  UnsubscribeEvent();
 }
 
 //登録の解除 
 void OnDestroy()
 {
  UnsubscribeEvent();
 }
 
 void UnsubscribeEvent()
 {
  EasyTouch.On_SimpleTap -= On_SimpleTap; 
 }
 
 //タップ時に通知を受け取る
 private void On_SimpleTap(Gesture gesture)
 {
  if (gesture.pickObject == gameObject) {
   //タップ時の処理
  }
 }
}

2014年11月22日土曜日

[Unity]Hierarchyにあるスプリクトのインスタンスをロードする

GameObject dataManager = GameObject.Find("/DataManager");
DataManager dataManagerScript = (DataManager)dataManager.GetComponent<datamanager>();
dataManagerScript.hogeIndex += 100;

[Unity]NGUIでUIRootが複数表示され、UIが表示されなくなる問題

Unity 4.5.5f1
NGUI 3.7.3

NGUIでUIが表示されない問題があった。
Hierarchyを見るとUIRootが大量に表示してある状態になっていた。

どうやらNGUIで作ったPrefabをHierarchyにドラッグしているときに
UIRootが自動的に作成されるようだ。

こうなるとUIRootが競合してすべてのNGUIのUIが表示されなくなる。

・解決方法
  1. 自動で作成されたUIRootをすべて削除する
  2. 使っているUIRootを非Activeにする
  3. ツールバー > NGUI > Create > UI Root (3D or 2D)を選択(UIRootがアクティブだと追加できない)
  4. 使っている非ActiveのUIRootの中身を3.で作った新しいUIRootに移動
  5. 使っている非ActiveのUIRootを削除
で正常に動くが、AnchorsをUnfiedにしているとNoneになるので、再度Unfiedにする必要がある。

2014年11月21日金曜日

[Unity]NGUI UIScrollViewを使う

Unity 4.5.5f1
NGUI 3.7.3

典型的なリストを作りには
Scroll View
>Grid
>>Sprite
>>Sprite
>>Sprite
>>Sprite

のように配置するとリストが作られる


UIScrollView

Content Origin
内部Viewの位置をどの方向にするか

Movement
どちらの方向にスクロールするか

Drag Effect
ドラック時スクロールエリアの最後にきた時に動作、iOSでいうところのBounds

Scroll Wheel Factor
ホイールを動かした時の移動量(マウスホイール限定?)

Momentum Amount
ドラッグ、スマホのフリック時の移動量

Restric Within Panel
ドラッグ時のスクロールは内部のViewに制限されるか
falseにするとどこまででもスクロールできる、普通はtrue

Cancel Drag if Fits
iOSでいうpagingEnabledとおなじ、画像アプリなどでよくある1枚1枚スクロールするかどうか

Smooth Drag Start
ドラッグ開始時にスムーズ処理が入る、体感ではあまり変わらない

iOS Drag Emulation
ゆっくりドラッグした時に移動速度が半分になるらしい、体感ではあまり変わらない

2014年11月17日月曜日

[Unity]MiniJSONの使い方

UnityでJSONを扱うにはいくつか種類がある
MiniJSON
JSON Object
LitJSON
NGUIJSON
今回は導入が簡単なMiniJSONを使用する
MiniJSONのファイルをダンロードしてProjectに配置
Deserializeで解析することができる。
Dictionaryの扱いがいまいちなサンプル
TextAsset textData = (TextAsset)Resources.Load ("jsonData");
string jsonString = (string)textData.text;
Dictionary&ltstring object&gt root = (Dictionary&ltstring,object&gt)Json.Deserialize (jsonString);
List"<"object">" firstList = (List"<"object">")root ["FirstList"];