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"];

2014年10月31日金曜日

[Unity]TouchScriptの使い方

ExamplesフォルダにあるSenseにサンプルがある

TapさせたいときはオブジェクトにAdd Component > Tap Gestrure(Script)を追加する
Colliderも追加する
using System;
using UnityEngine;
using TouchScript.Gestures;

public class TapManager : MonoBehaviour
{
    void OnEnable ()
    {
        GetComponent<tapgesture> ().Tapped += tappedHandler; 
    }
    
    void OnDisable ()
    {
        GetComponent<tapgesture> ().Tapped -= tappedHandler;
    }
    
    private void tappedHandler (object sender, EventArgs e)
    {
        Destroy (gameObject);
    }
}

2014年10月29日水曜日

[Unity]Resourcesにあるプレハブを読み込みインスタンスを生成する

Unity 4.5.5f1

プレハブの読み込みは公式にサンプルコードがある

Resources.Load
http://docs.unity3d.com/ScriptReference/Resources.Load.html

以下のコードはInstantiateの戻り値がObjectなのでGameObjectに変換できない、としてコンパイルエラーが発生する

//コンパイルエラー
GameObject instance = Instantiate (Resources.Load ("enemy"));
不格好だがこんなキャストでいける
//Load可能
Transform instance = (Transform)Instantiate ((Transform)Resources.Load ("enemy"));
これで動作はするが、どこかおかしい気がする