めも

主にUnity

UnityのInputSystemの使い方

間違ってるかも。

  • PackageManagerからInputSystemを入れる

f:id:mikomon:20210910095049p:plain

  • VisualStudioからAPIにアクセスできるように、赤枠のチェックボックスがチェックされていることを確認。

f:id:mikomon:20210910095343p:plain

  • InputActionAssetを作る。

Projectからでも作れるが、以下の方法で行うと参考になる。空のGameObjectにPlayer Inputコンポーネントをつけ、Create Actions...する。
f:id:mikomon:20210910150936p:plain
その後そのGameObjectは削除して良い。

  • 必要に応じて編集する。

f:id:mikomon:20210910151141p:plain
Action Mapが操作対象、Actionが操作で、その下位のものが操作に使う手法、その下位が(あるなら)実際のキーにになると思われる。

  • Project Settings → Input System Package で設定ファイルを作っておく。何もいじらなくて良い。
  • スクリプトを作る。
[SerializedField]
private InputActionAsset inputActionAsset;
[SerializedField]
private string moveActionName = "Move";
private InputAction moveAction;

private void Start(){
    moveAction = inputActionAsset[moveActionName];
    moveAction.Enable();//これがないと動かないよう?
}

private void Update(){
    var vec2 = moveAction.ReadValue<Vector2>();
    transform.position += new Vector3(vec2.x, vec2.y, 0f);//などなど
}

googleの検索言語

googleの検索言語は英語onlyでいい。

この状態で日本語で検索すると、やむを得ず日本語のページを出してくる。言語あってますか的なウィンドウが邪魔なら、アドブロックかなんかで対応すればいいはず。
f:id:mikomon:20210908193941p:plain

unity GUIDのかぶりを両方残す方法

unitypackageを開いたら被りがあって上書きされてしまう!

f:id:mikomon:20210822150036p:plain:勝手にGUIDが変わる 別にいい
f:id:mikomon:20210822150102p:plain:ファイル名が重複していて上書きされてしまう!

とにかくf:id:mikomon:20210822150215p:plainのマークをなんとかしないと、上書きされてしまう。

上書き後のファイルが他の部分で参照されてほしい場合

アセットをCtrl+Dで複製したあとにただImportする。

上書き前のファイルが他の部分で参照されてほしい場合

アセットの名前/パスを変更した後にImportする。

これらの処理を自動化するには、

  1. AssetPackageを事前に解析する方法
  2. ReflectionなどでUnityのImport時に出るウィンドウを解析する方法

などが考えられる。


↓考えすぎ
***元のファイルのGUIDを変更する方法
非推奨

まずシーンを保存する。こうしないと恐らく「変更されました」通知が出た後、保存するとシーンに対して効果がなくなり、また保存しないとおじゃんになる。
1. Add package from git URL https://github.com/jeffjadulco/unity-guid-regenerator.git
2. 一旦unitypackageを開く
3. 警告⚠マークになっているところのhelpboxに競合先が書いてあるため、そのファイルすべてをRegenerate GUIDする。
思ったより待ち時間が必要(自分の場合は20分程度, Assetsフォルダは12GB, 約2万ファイル)で全く現実的でない。(ちなみにタスクマネージャのディスク使用率は大体3-5%だったので、ドライブの速度はあまり問題にはならなそう。)一気にregenerateしたほうが良い。

入れるファイルのGUIDを変更する方法

入れるunitypackage内でguidが完結しているはずだから、unitypackage(tar.gz)を解凍した後、guidを全部置換して、再度圧縮して、unitypackageとしてインポートする。スクリプトじゃないときつそう。

作るべきスクリプト

unitypackageのf:id:mikomon:20210822150215p:plainのマークがあるもののファイル名とGUIDを変更してインポートするスクリプト

コピーする方法

1. 一旦unitypackageを開く
2. 警告⚠マークになっているところのhelpboxに競合先が書いてあるため、そのファイルすべてを複製する
3.手作業で修復する