興味本位でちょっと Unity でもいじってみるか、とか思って
とりあえずいわゆる「黄本」の写経をちょこちょこやってるわけですが、
Unity のバージョンの差なのか、ときどきインターフェースとかが
本と違ってるなんていうトラップが仕込まれてたりします。
今回ハマったのは FBX(3Dモデル)ファイルの読み込み部分なんですが
アニメーションが正常に読み込まれてない…??
てか何が困るって Unity はまだまだ情報が少ないもんで、ちょっと
つまづいただけでもネットで情報調べながら解決しようとすると
丸1日作業になったりするという…
んで本題。
黄本に書いてある手順だと、大まかには
1.fbx(3Dモデル情報) と png(テクスチャ) をインポート
→prefab として登録される
2.prefab をインスタンス化(Hierarchy ビューにドラッグ&ドロップ)
3.アニメーションスクリプト作成
4.スクリプトを2で作ったオブジェクトにドラッグ&ドロップ
てな感じですが、自分の環境でこの通りにやると以下のようなエラーが
出やがりました。
「Animation なんかそのオブジェクトにはないよ」みたいな。
てかその前段階のアニメーション動作確認とかの時点でもう
インターフェースがだいぶ違っちゃってて、↑の画像見ての通り
そもそもオブジェクトに「Animation コンポーネント」とかないワケですよ。
で、ネットを漁りまくってようやく見つけた解決方法。
FBX インポートインスペクタの Rig パネルの Animation Type を
Generic → Legacy に変更して Apply。
すると
無事オブジェクトのとこに Animation コンポーネントが出てきました。
あとは黄本のとおりでOK、と。やれやれ。
まあもっと別の解決法もあるんだろうなーとは思いますが、とりあえず
写経の段階だし動けば万事OKってことで。
2013年8月3日土曜日
Javaでのクラス継承時のコンストラクタ
仕事で Android アプリの開発をすることになったものの、
java とかほとんど触ったこともないワケで。
ちょっくら java のコンストラクタの呼ばれ方が気になったので
実験してみた。
んで実行結果が
status : Super 1 Called Sub 2 Called
なので、呼び出し順としては
1.スーパークラス引数なしコンストラクタ
4.サブクラス引数ありコンストラクタ
ってことか。
どのコンストラクタがどの順番で呼ばれるか、てのは実際やってみると
なるほどって感じですな。
java とかほとんど触ったこともないワケで。
ちょっくら java のコンストラクタの呼ばれ方が気になったので
実験してみた。
- SuperClass.java
public class SuperClass { protected String status = "status :"; //1.引数なしスーパークラスコンストラクタ public SuperClass() { status += " Super 1 Called"; } //2.引数ありスーパークラスコンストラクタ public SuperClass(Context context) { status += " Super 2 Called"; } @Override public String toString() { return status; } }
- SubClass.java
public class SubClass extends SuperClass{ private Context context; //3.引数なしサブクラスコンストラクタ public SubClass() { status += " Sub 1 Called"; } //4.引数ありサブクラスコンストラクタ public SubClass(Context _context) { status += " Sub 2 Called"; context = _context; } //結果表示 public void checkValue() { Toast.makeText(context, toString(), Toast.LENGTH_SHORT).show(); } }
- MainActivity.java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final SubClass subClass = new SubClass(this); Button button = (Button)findViewById(R.id.button1); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { subClass.checkValue(); } }); }
- activity_main.xml
んで実行結果が
status : Super 1 Called Sub 2 Called
なので、呼び出し順としては
1.スーパークラス引数なしコンストラクタ
4.サブクラス引数ありコンストラクタ
ってことか。
どのコンストラクタがどの順番で呼ばれるか、てのは実際やってみると
なるほどって感じですな。
登録:
投稿 (Atom)