Unity Record 4.1 - ストレージ - キーワードに基づいたタイルのロード

この記事は最初にブログで公開されました: https://mwhls.top/4810.html
画像なし/形式エラー/今後の更新については、最初のページをご覧ください。
詳細な更新情報については、mwhls.topをご覧ください
。質問や批判がある場合は、メッセージを残していただけます。プライベート メッセージには返信されません。

概要: Unity レコード

概要: タイルマップ マップの生成を実装した後、キーワードに基づいてタイルを読み込みます。

  • マップを保存するには、まずインスペクタでドラッグアンドドラッグするのではなく、キーワードに基づいてマップをロードできる必要があります。そのため、最初のステップはパスに基づいてローカル ファイルをロードすることです。
アドレス可能資産システム (失敗)-2023/08/13-2023/08/14
        async void place_tiles(Tilemap tilemap, ArrayList pos_array){
    
    
            AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>("Assets/ResourcesAddressable/Prefab/Block/SoilBlock.prefab");
            await handle.Task;
            GameObject tilePrefab = handle.Result;
            GameObject instantiatedTile = Instantiate(tilePrefab);
    
            TileBase tile = instantiatedTile.GetComponent<TileBase>();
            foreach (Vector3Int pos in pos_array){
    
    
                tilemap.SetTile(pos, tile);
            }
        }
リソースが読み込まれました-2023/08/14
  • 実はこれは5か月前の私の計画です。
    • しかし、今では GPT があるので質問することができ、Addressable を勧められました。これは非常に良さそうなので、最初に上記の解決策を書きました。
  • 以下のコードに示すように、プレハブの代わりにアセットをロードしました。わずか 2 行で実装されました。
    • 実際のパスは「Assets\Resources\Tilemap\Block\Soil/1_GrassSoilBlock.asset」で、Resources とそのプレフィックス、ファイル拡張子を省略します。
    • アセットであろうとプレハブであろうと、ロードするには addressable を使用します。タイプが返されますが、それを変換する方法がGameObject見つかりません。TileBase
    string tile_path = "Tilemap/Block/Soil/1_GrassSoilBlock";
    TileBase tile = Resources.Load<TileBase>(tile_path);

おすすめ

転載: blog.csdn.net/asd123pwj/article/details/132394313