関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2015.05.07UE4UE/ Blueprint
執筆バージョン: Unreal Engine 4.7 改訂バージョン: Unreal Engine 4.19 |
普段のPCを使った作業のなかで、コピー&ペースト(以下、コピペ)は欠かせない機能です。
UE4でも、もちろんコピペ機能は実装されていますが、意外と便利な使い方が知られていないこともあるようです。
そこで今回は、UE4のコピペ機能についてご紹介したいと思います。
UE4上でなんらかのActorを選択し、メインメニューの「Edit」を選択してみます。
このように、コピペ関連の機能が並んでいます。
ただ、ほとんどの場合は、このメニューではなく、キーボードのショートカットを使われるのではないでしょうか。
ココで、「Copy」(コピー)と「Duplicate」(複製)が別で存在しています。
これは何が違うのかというと、「Duplicate」は単に、その場で「Copy」と「Paste」を連続して実行しているだけです。
つまり、その場に複製を作成します。Altキーを押しながらActorを移動させる際にも、「Duplicate」が行われています。
では、「Copy」のメリットはなんでしょうか。
「Copy」を行うと、そのActorを配置するための情報が、Windowsのクリップボード上に保存されます。
つまり、その場じゃなくても貼り付けが出来ます。レベルを跨いでも、プロジェクトを跨いでもOKです。
あるプロジェクト上で「Copy」した配置情報は、全く別のプロジェクト上でも「Paste」出来ます。
UE4上でコピペが出来るのは、Actorの配置情報だけではありません。
あらゆる型のプロパティがコピペ可能です。
例えば、「Location」や「Rotation」の値は、XYZまとめて一度にコピペが可能です。
「Details」ウィンドウなどで、対象のプロパティを右クリックすると、「Copy」「Paste」のメニューが出てきます。
単純な数値型だけでなく、列挙型や、アセット参照型もコピペが可能です。
UE4.7から「Details」ウィンドウにコンポーネントが表示されるようになりましたが、コンポーネントを丸ごとコピーして、別のActorに貼り付けることも可能です。
では、コピペの際にクリップボードに貼り付けられるデータは、どのようなものでしょうか。
実際に、1つのActorを選択してコピーした状態で、テキストエディタ上にペーストしてみると、下記のようなテキストデータが貼り付けられます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Begin Map Begin Level Begin Actor Name=Actor_1 Archetype=Actor'/Script/Engine.Default__Actor' Begin Object Name="DefaultSceneRoot" End Object Begin Object Name="DefaultSceneRoot" bVisualizeComponent=True RelativeLocation=(X=200.000000,Y=80.000000,Z=100.000000) CreationMethod=Instance End Object RootComponent=SceneComponent'DefaultSceneRoot' ActorLabel="Actor" InstanceComponents(0)=SceneComponent'DefaultSceneRoot' End Actor End Level Begin Surface End Surface End Map |
実は、UE4のコピペは、このt3dデータを介して実装されています。これは、t3d形式という、UE独自形式のテキストデータです。
つまり、逆に言うと、t3d形式のデータを作成することさえ出来れば、配置情報を外部ツールで作成/編集することも可能ということです。
「Paste」によってクリップボードから貼り付けるほか、ファイルとして保存されたt3dデータは、メインメニューの「File」->「Import…」からインポートすることも可能です。
ほとんどのケースは、上記のようにt3d形式のテキストデータを介してコピペが可能ですが、完全に万能ではありません。
例えば、MatineeActorのように、他のActorを参照する場合です。
t3d上では、下記のようにActorへの参照が「ID Name」によって保存されているようですが、同じ「ID Name」のActorが存在するレベル上に「Paste」しても、Actorへの参照は切れてしまうみたいです。
1 2 |
GroupActorInfos(0)=(ObjectName="InterpGroup_0",Actors=(StaticMeshActor'/Game/StarterContent/Maps/Minimal_Default.Minimal_Default:PersistentLevel.Chair')) GroupActorInfos(1)=(ObjectName="InterpGroup_1",Actors=(StaticMeshActor'/Game/StarterContent/Maps/Minimal_Default.Minimal_Default:PersistentLevel.Chair_15')) |
このケースでは、トラックとキーフレームの情報は保持されているようなので、Actorをグループに再登録する手間だけが必要になるようです。
このような機能を把握しておけば、ちょっとした作業を簡略化出来たり、コンテンツ開発のワークフローに組み込んで外部ツールとの連携を強化したり出来ます。
せっかくなので、便利に使っていきましょう。