渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

UnityタイムラインのAnimationEventを受け取る方法と罠

f:id:esakun:20150730215258g:plain

UnityのタイムラインとAnimationEventを組み合わせた場合の備忘録。

  • AnimationEventを仕込んだAnimationClipを用意
  • AnimationTrackに先のAnimationClipをセット

この場合、どうやってAnimationEventを受け取るか?

PlayableDirectorではなくAnimator側で受け取る

感覚的にはPlayableDirectorがアタッチされたGameObjectにレシーバーのコンポーネントをくっつけておけばイベントを取得できるかなーなんて思っていましたが、それだと以下のエラーが出ちゃいます。

'AnimationTrackにセットされたGameObject名' AnimationEvent 'AnimationEvent名' has no receiver! Are you missing a component?

エラー内容から分かるように、AnimationTrackにセットされたGameObjectにレシーバーコンポーネントをくっつけるのが正解です。

これで正しくイベントを受け取ることが出来ます。

バージョンの罠

Unityのバージョンによって、AnimationEventが発火しない致命的なバグが存在します。

Unity Issue Tracker - Event added to animation window, which is linked to sequence editor, doesn't get activated

こちらのissueにあがっていますが、Unity2017.2.0b10からUnity2017.3.1f1までの間はこのバグが存在するためタイムラインによるAnimationEventは使用できません。

Unity2017.3.1p1で対応が入っているので、それ以降のバージョンをお試しください。

Unity - Unity QA - Patch Releases

余談

ちなみにAnimationEventをテーマに記事を過去に書いてます。

AnimationEventはAnimationClip自体にイベントを仕込んで、それをプログラム側で取得する、アーティストとプログラマーの作業を分離させてくれる機能といえます。

実績的には、剣を振った時の衝突のタイミングにイベントし込んだりしました。便利っちゃあ便利です。

検証環境

  • Unity2017.3.1p4

Unityのスケール1とMayaで書き出したFBXのスケール1を一致させる方法

ゆっくりとMayaを勉強していますが、あらためてMayaで書き出したFBXファイルをUnityにインポートした際のスケールのルールについて確認しようと思います。

Maya Unity
f:id:esakun:20180224172411p:plain:w300 f:id:esakun:20180224213739p:plain:w300

上図のように可能であればMayaの1Unityの1を同じサイズにできたら、Maya Unity間のワークフローとしてシンプルで良いなと思うんですが、デフォルトでは同じではありません。

Mayaの1は1センチメートル、Unityは1メートルです。
この状態だとMaya側で100倍のサイズで作らなければUnityの1と一致しません。

続きを読む

Unity SetTargetBuffers、Blit、SetRenderTargetの関係性の謎にせまる

f:id:esakun:20150730215258g:plain

世界ふしぎ発見を見ながら記事を書いていたのでタイトルが影響を受けております。
2017年も残りわずか、この記事が今年最後の投稿になるかもしれません。来年もよろしくお願いいたします。


では本題へ

  • camera.SetTargetBuffers
  • Graphics.Blit
  • Graphics.SetRenderTarget

イマイチ理解していなかった上記3メソッドの調査しました。

続きを読む

Unity2017.3のAssembly Definitionがコンパイル時間短縮の救世主になりそうな予感

f:id:esakun:20150730215258g:plain

Unity2017.2までは、各ソースはディレクリ命名ルールから以下の4種類のAssemblyファイルが生成されていました。

  • Assembly-CSharp-firstpass.dll
  • Assembly-CSharp-Editor-firstpass.dll
  • Assembly-CSharp.dll
  • Assembly-CSharp-Editor.dll

詳しくはコチラをどうぞ。
Unityのコンパイル時間短縮化の工夫 - 渋谷ほととぎす通信

先の記事でも書きましたが、Assembly-CSharp.dllが大抵肥大化することとなり、コンパイル時間を大きく増やす原因になります。

私が経験してきたプロジェクトの中で最長コンパイル時間は40秒〜1分ほどです。

続きを読む