テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】multi-object editing not supported(複数のオブジェクトを選択したときに編集できなくなる)をエディター拡張無しに一気に編集する

コンポーネントのエディター拡張によっては、複数のオブジェクトを選択したときに「multi-object editing not supported」と表示され編集が出来なくなる物があります。

f:id:tsubaki_t1:20180716220518j:plain

これがPrefab化しているならPrefabの大本をイジれば良いという話になるのですが、Prefab化していない場合これは少し面倒な問題になりますし、そのためだけにPrefab化するのは面倒な所もあります。

 

 

自分でエディター拡張している場合のmulti-object editing not supported対処は割と簡単

もし自分でエディター拡張している場合、解決方法は割と簡単です。CanEditMultipleObjectsを使えば良いです。
少し拡張した中身も変える必要がありますが、下の記事を参考にすれば簡単です。kan-kikuchi.hatenablog.com

とは言え、自分で全てのオブジェクトをエディター拡張していなければ、特にコンパイル済みでDLLだったり、CinemachineのようにPackageManagerに格納されている場合は出来ない手です。

 

CanEditMultipleObjectsが無いエディター拡張済オブジェクトの設定を一気に変更する

CanEditMultipleObjectsが無いエディターを一気に変更します。
といってもコレは「特定のパラメーター変更を適応する」のではなく、「指定したオブジェクトを全て同じパラメーターにする」アプローチです。そのため使い所は限られるかもしれません。

 

  1. まずGameObjectを一つ選択し、コンポーネントの設定を変更します。
  2. 基準にしたいコンポーネントコンテキストメニューを開き、Copy Component
  3. 基準を適応したいコンポーネントを持つGameObjectを選択し、Paste Components

これで変更が適応出来ます。

f:id:tsubaki_t1:20180716223004g:plain

 

【Unity】Unity 2018.2でMacのVS Codeが入力補完してくれなくなった時の対処

Unity 2018.2にしたところ、MacVS Codeが入力補完をしてくれなくなったので、その対策についてです。

 

結論としては、下のパッケージを入れればOKでした。

http://www.mono-project.com/download/stable/

 

f:id:tsubaki_t1:20180710230642j:plain

 

WindowsVisual Studioの場合はこちら

tsubakit1.hateblo.jp

【Unity】TimelineからAnimationEventのようにメソッドを呼び出したい UnityTimelineEvents

AnimationEventのように、Timelineのイベントを実行する方法についてです。

 

 

f:id:tsubaki_t1:20180706232042g:plain

Timelineを使用していると、特定のタイミングでイベントを発行したいと思う事はよくあります。
例えば通常のカットシーンでは「爆発の衝撃でカメラを揺らす」といったタイミング、必殺演出では「ダメージ表示のタイミング」といった具合です

しかしTimelineのEventはまだ登場しておらず、代替ソリューションでITimeControlやActiveを使用しろと言う始末。(一応Unity 2018.2かUnity 2018.3辺りで登場する予定な模様 2019.1に延期)

【Unity】Timelineからメソッドを呼ぶ新機能 「Marker」と「Signal」と「Signal Receiver」 - テラシュールブログ

 

自分は今使いたいので代替案を探した所、UnityTimelineEventsというモノがあったので紹介します。

 

UnityTimelineEvents

Unity Timeline EventはGithubで公開されているTimelineでイベントを発行することが出来るアセットです。

github.com

f:id:tsubaki_t1:20180706232454j:plain

Timeline上で指定したGameObjectの持つメソッドを、任意のタイミングで呼び出す呼び出すことができるので、結構良い感じに使えます。
使用できるイベントはPublicで引数が0~1個のメソッドです。使用できる引数のタイプはint、string、float、bool、enumなどAnimationEventでお馴染みのAPIが呼び出せるようになっているみたいです。

 

実際に使ってみる

実際に使ってみます。

まずTantawowa.timelineEvent > Timeline Event Trackで、新しいトラックを追加します。

f:id:tsubaki_t1:20180706233019j:plain

トラックにEventを呼び出したいGameObjectをセットします。
ここでセットしたGameObjectに登録されているComponentのメソッドが呼び出せるようになります。

f:id:tsubaki_t1:20180706233756j:plain

あとはClipでメソッドを呼び出します。実はメソッドだけでなくプロパティも呼び出せたりします。

f:id:tsubaki_t1:20180706234033j:plain

f:id:tsubaki_t1:20180706234149g:plain

なおゲームを再生せずともTimelineのイベントを呼び出すオプションがありますが、ここで変更した値を戻す事を考えると余り使いたくない所です。
Timelineの変更はゲーム再生終了後も維持されるので、このイベントの動作はゲームを実際に再生しながら調整するのが個人的には良いように感じています。

 

関連

一応、AnimationEventをTimeline側から呼び出すことは出来るので、そちらで調整するアイディアもあるかもしれません。

www.shibuya24.info

tsubakit1.hateblo.jp

【Unity】AnimationClipの編集が出来ない時の対策

今回は簡単なトラブルシューティングです。

 

 

f:id:tsubaki_t1:20180703235908j:plain

AnimationClipを編集するのに一番手っ取り早いアプローチがAnimationエディターでRecordして、対象のオブジェクトを動かすというものです。

他にもこのAnimationClip編集機能は、アニメーションの微調整とかも出来たりと色々と便利ではあるのですが、幾つかの条件で編集出来なくなります。

 

AnimationClipがReadOnlyなのはFBXにAnimationClipが格納されているため

FBXに格納されているAnimationClipは編集出来ません。
取り出してアセットとして利用できるようにすれば編集可能になります。ただし取り出し元を編集しても取り出したアセットには反映されないので、その辺り注意が必要です。具体的には上書きするとか

tsubakit1.hateblo.jp

TimelineがPreview中はAnimationClipをRecordにできない

取り出したアセットや自分で生成したアセットでも編集出来ないといった場合があります。

この条件はタイトルの通りで、TimelineがPreviewの時はAnimationClipが編集出来なくなります。正確にはTimelineがPreview中はTimelineから作成していないAnimationClipが編集出来なくなります(つまりTimelineからComvert To Clip Trackしたアニメーションは編集可能です)

f:id:tsubaki_t1:20180704000632g:plain

対策はTimelineのPreviewを止めることですが、個人的にはTimelineウィンドウを消すがの正義です。

 

Optimized Game Objectが設定されたオブジェクトのAnimationは編集出来ない

もう一つあるとすれば、AnimatorがOptimized Game Objectになっています。これを解除すればAnimationClipが編集可能になります。

f:id:tsubaki_t1:20180704001554j:plain

なお「編集ができない」だけで編集したAnimationClipはOptimized Game Objectで使用できます。

tsubakit1.hateblo.jp

Add Propertyが押せない

Add Propertyが押せるのは、Animator(GameObjectの)を選択している時のみです。

 

f:id:tsubaki_t1:20190111115411g:plain