この記事は最初にブログで公開されました: https://mwhls.top/4810.html。
画像なし/形式エラー/今後の更新については、最初のページをご覧ください。
詳細な更新情報については、mwhls.topをご覧ください
。質問や批判がある場合は、メッセージを残していただけます。プライベート メッセージには返信されません。
概要: Unity レコード
概要: タイルマップ マップの生成を実装した後、キーワードに基づいてタイルを読み込みます。
- マップを保存するには、まずインスペクタでドラッグアンドドラッグするのではなく、キーワードに基づいてマップをロードできる必要があります。そのため、最初のステップはパスに基づいてローカル ファイルをロードすることです。
アドレス可能資産システム (失敗)-2023/08/13-2023/08/14
- 動的マップの読み込みには、Addressable Assets System を使用します。
- 関連リソース:
- しかし、多くの方法を試しましたが、タイルベースを読み込んでタイルマップに描画することができませんでした。
- 次のコードはプレハブを正しく読み込むことができます。実行後、インスペクター上に大量のプレハブが表示されますが、タイルマップの描画時にエラーが報告されます。
- タイルマップを使用してタイルを描画する場合、インスペクターの内容は変更されません。主な問題は、
GameObject tilePrefab = handle.Result;
使用できるだけGameObject
で使用できないことですTileBase
。
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);