--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2012-10-31(Wed)

NGUIのAtlas作成[Unity]

NGUIでタイトルメニューを作成しようとしてます。
ゲームでは、fontもspriteも全部まとめたAtlasを一枚だけ使おうと思っています。
小さいゲームなんでそれで事足りると思うし、
NGUIのpanel内の描画順番は、別materialに分けると描画順が制御しづらくなるという噂は、NGUIを使ったことのない、私の耳にまで届いているので、要するに一枚だけのAtlasでいきます。

公式の動画では、ものの5分で作成してましたが、
色々ぐちゃぐちゃやっちゃって、一日かかってしまいました。
http://www.youtube.com/watch?v=4JW4M7wbzeo

以下のサイトが参考になりました、
個人的なUnityWiki
Atlas Maker
Font Maker
NGUIのAtlas Maker と Font Makerでやり始めては、実質10分位で出来ました、素晴しい!

Atlas作成
  1. 先にスプライトを用意して、Atlasを作成しました。
    スプライトとして使用する、textureをプロジェクトにインポート。それらを選択した状態で、NGUI > Atlas Makerを選択してウィンドウを開く。

  2. Atlasの名前を入力して、Create!
    データ追加、削除、更新もここで行えます。
atlasmaker

Fontの追加
  1. Bitmap Font Generatorでfontデータ作成しました。(日本語fontは入れていません)
    Options > Font Settings と Options > Export Optionsを設定
    Options > Save bitmap font as...でNGUIに組み込むfontデータを出力

  2. .fntファイルはそのままでは、読んでくれないので拡張子を.txtに変更
    テクスチャとtxtファイルをプロジェクトにインポート。

  3. NGUI > Font Makerを選択してウィンドを開き、テクスチャとFont Dataにtxtファイルを設定。
    最初に作成したAtlasに入れるので、Atlasを選択して、作成。

fontmaker

後は作成した、AtlasやFontを選択して、表示できました。簡単!
スポンサーサイト
2012-10-30(Tue)

Android縦持ちの設定に戻した[Unity]

横画面でプレイするようにしていたのですが、
だいたい縦持ちなんで、縦のがいいよということで、縦画面の設定に戻しました。

portrait inspector setting

Build Settings... > Player Settings... >
Resolution and Presentation > Default Orientation : Portrait に
画面にちゃんと入らなくなったので、カメラ調整しました。

Unity Editor上でプレビュー確認するとき、800x480とか選択しているのですが、
実機で確認したときでは、なんかアスペクト比がずれてしまいます。

http://blog.be-style.jpn.com/article/53398731.html

Maximize on Playなどで、ゲーム画面のプレビューを最大化するとちゃんと見えるようです。
→(追記)アスペクト比を固定するようにすると、解決できました。

解像度設定とかどうするべきか、800x480でやるの?
2012-10-29(Mon)

MonoBehaviourを継承しない、Singleton[Unity]

NGUIでtutorialそのままの仮のタイトルメニューを作成して、
タイトルメニューからゲーム、ゲームからメニューへとScene遷移を行うようにしました。

Scene遷移でデータを渡す方法がよく分からなかったので検索すると、
PlayerPrefs とか DontDestroyOnLoad しろとか言われたので、
PlayerPrefsは面倒そう、よくわかんない、
値保持だけでよいのでDontDestroyOnLoadでやろうと思って途中までやりまたが、
受け渡しするデータは、現状選択されたモードだけ、
後は、スコアの記録やオプション設定が増えるだけなので、
MonoBehaviourを継承するのも嫌だなと思っていると。

"static publicとして宣言された変数はシーンをまたいで情報を引き継げる"とあったので、

MonoBehaviourを継承しないSingletonにして、
データの受け渡しを行うようにしました。

using UnityEngine;
using System.Collections;

public class SingletonGameData {
private static SingletonGameData m_instance;

public SingletonGameData() {
if( m_instance != null ){
Debug.LogError ("Cannot have two instances of singleton. Self destruction in 3...");
return;
}
m_instance = this;
this.clear();
}

public static SingletonGameData instance {
get {
if( m_instance == null ){
new SingletonGameData();
}
return m_instance;
}
}

void clear() {
this.mode = -1;
}

// select mode
public int mode { set; get; }
}

http://wiki.unity3d.com/index.php?title=Singleton

MonoBehaviourを継承するとInspectorで検査できるようになるので、それはそれでスーパー便利ですが、
引き換えに失うものもあるはずです。
2012-10-27(Sat)

Asset Serialization - Force Text設定時のImport[Unity]

一人で作業しているだけなので、UnityのProjectをsvnやgitで、バージョン管理しています。
Asset Serialization に Force Text を設定していますが、
この設定で、packageをImportしても、設定通りのserializationにならず、
マテリアルデータやシーンファイルがバイナリのままになっています。
気付かないで、そのままcommitしてしまうと、
checkoutし直した時に、serializeされて、テキストに変更されたり、
バイナリのmime-typeで登録され、データはテキストに変更したのだが、mime-typeは変更されず、
conflict起こしまくったりしました。

なので、packageインポートした後は、Assets > Reimport All を行って、
serializeされ直すようにしています。
Reimport Allは、時間がかかるので、serializeだけちゃんとやってくれる方法知りたいです。

とりあえず、NGUIをインポートしました。
ゲーム部分はまだまだですが、タイトルメニューを作っていこうかなと。。。
2012-10-26(Fri)

矢印objにTrail Rendererを追加[Unity]

空のGameObjectに Component > Effects > Trail Renderer で追加
Time , Start Width, End Width などを調整
これだけで、GameObject動かすとTrail引いてくれます。

trail renderer img

Scriptは、特定のタイミングから、Trail RendererをONしたかったので、
ON/OFFを制御するようにしました。

最初、TrailRenderer.enabled を ON/OFFしたのですが、
それだと、ONする前の軌跡も表示されてしまったので、
gameObject.activeのフラグを落とすようにしました。

http://docs.unity3d.com/Documentation/Components/class-TrailRenderer.html
http://docs.unity3d.com/Documentation/ScriptReference/TrailRenderer.html
2012-10-23(Tue)

画面外判定して、Destroy[Unity]

矢印の移動を追加しました。
velocity設定して、Update()でTime.deltaTime分加算するだけ。
画面外にobjectが出たら、移動は終了なので、Destroyします。

画面外の判定は、WorldToViewportPointで、viewport spaceの座標から判定
左下が (0,0); 右上が (1,1).
負値だと画面外なので、以下のようにしました。


// 矢印の方向に移動
transform.position += velocity * Time.deltaTime;

// 画面外で消去
Vector3 view_pos = Camera.main.WorldToViewportPoint(transform.position);
if( view_pos.x < -0.5f || view_pos.x > 1.5f ||
view_pos.y < -0.5f || view_pos.y > 1.5f ){
// destroy object
InstanceManager.Destroy( this.gameObject );
}

0.5マージンとってあります。
z値が負値の場合は、カメラの後ろ側です。
後ろ側にもっていくことはないので判定していません。

Advertising


カテゴリ
記事一覧
最新記事
最新コメント
最新トラックバック
月別アーカイブ
プロフィール

tasogare66

Author:tasogare66
ひっそり週末プログラム
@tasogare66

【Androidアプリ】


Wipes Arrow
(スワイプアクション)

review site
Uni本
リンク
RSSリンクの表示
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。