UnityEditor上で、インスペクタでの主に配列やListへ設定の補助をするエディタ拡張です。
IntelligentCopyAndPasteフォルダをそのままプロジェクトに追加してください。 または、IntelligentCopyAndPaste.unitypackage をインポートしてください。
コピーしたいAssetsまたはGameObjectを選択した状態でメニューバーから Assets-Copy Assets Paths
を選択する事で、情報がコピーがされCopy元管理ウインドウが開きます。
※右クリックメニューからCopy Assets Paths
を選ぶ事も出来ます。
※メニューバーからAssets-AppendCopy Assets Paths
または 右クリックメニューからAppendCopy Assets Paths
を選択することで追加コピーになります。
コピーされた状態で、Inspectorで配列などを設定したいGameObjectを選択し、メニューバーから Assets-Paste Assets Paths
を選択することで、Paste先確認ウインドウが開きます。
※右クリックメニューからPaste Assets Paths
を選ぶ事も出来ます。
※メニューバーからAssets-AppendPaste Assets Paths
または 右クリックメニューからAppendPaste Assets Paths
を選択することで 追加ペースト(もともと設定されているデータの後ろに追加) になります。
選択をしてコピーをすると
Copy元管理ウインドウが表示されます。
例として、このようなScriptを書きます。
using UnityEngine;
using UnityEngine.UI;
public class ImageClick : MonoBehaviour
{
[SerializeField] private Image image;
[SerializeField] private Sprite[] spritesArray;
[SerializeField] private Button button;
private int spriteIndex;
void Start()
{
spriteIndex = 0;
button.onClick.AddListener(() =>
{
image.sprite = spritesArray[spriteIndex];
spriteIndex = (spriteIndex + 1) % spritesArray.Length;
});
}
}
これはボタンを押すたびに、インスペクタで指定したSprite配列を一つずつ表示するScriptになります。 インスペクタ上ではこのような表示になります。
この ImageClickスクリプトがアタッチされたGameObject を選択した状態でペースト(Assets-Paste Assets Paths
)を行うと
このように、Paste先確認ウインドウが表示され、}ペースト先の候補と、それに対するコピー元の候補の組み合わせが(可能な限り)全て洗い出され表示されます。
(今回の例だと、コピーされているのは複数のSprite
なので、Sprite
が設定できる可能性があるものが全て表示されることになり、Imageコンポーネント
のSprite(配列、Listではない)と、ImageClickスクリプト
の Sprite配列 の2つが候補として表示されています。
実際にペーストをしたい対象を選択し、"OK"を押すことで、実際にペーストされます。
※なおIsOverride にチェックが入っている場合は上書き、チェックが外れている場合は追加(Ctrl+Shift+C同等)になります。
ショートカット | 機能 |
---|---|
Ctrl+c | Copy Assets Paths |
Ctrl+Shift+c | AppendCopy Assets Paths |
Ctrl+v | Paste Assets Paths |
Ctrl+Shift+v | AppendPaste Assets Paths |
既存の Ctrl-c,Ctrl-Shift-c および Ctrl-v,Ctrl-Shift-v のショートカットが使用できなくなります。
何かと競合してしまってどうしても修正したい場合は \IntelligentCopyAndPaste\Editor\ArrayCopyPasteComponent.cs
にショートカットの登録がMenuItem
Attribute にて指定されてますので、変更する手もあります(責任は負えません)