興味本位でちょっと 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)


