この記事は最初にブログで公開されました: https://mwhls.top/4813.html。
画像なし/形式エラー/今後の更新については、最初のページをご覧ください。
詳細な更新情報については、mwhls.topをご覧ください
。質問や批判がある場合は、メッセージを残していただけます。プライベート メッセージには返信されません。
概要: Unity レコード
概要: json ファイルからタイル マテリアルのパスを取得します。
保存計画決定 - 2023/08/15
- GPTに問い合わせたところ、タイルマップはカメラの位置に基づいてレンダリングされるため、サイズが大きすぎるマップは読み込みパフォーマンスに影響しないとのことです。
- GPT ではさまざまな方法が推奨されていますが、最初は json+圧縮を使用します。
- 以下はテストケースです。
{
"version": "0.0.1",
"date": "20230815",
"tiles":{
"BlockSoilGrassySoil":{
"ID": 0,
"name": "Grassy Soil",
"description": "",
"path": "Tilemap/Block/Soil/BlockSoilGrassySoil"
}
}
}
Newtonsoft.Json のインストール-2023/08/16
- GitHub:UPM経由で公式をインストール · jilleJr/Newtonsoft.Json-for-Unity Wiki
- 上部のメニュー バーの Windows - パッケージ マネージャー - プラス記号をクリック - パッケージを名前で追加し、パッケージ名として「com.unity.nuget.newtonsoft-json」と入力してインストールします。
jsonファイルから素材を読み込む - 2023/08/16
- 以下のようにマテリアル情報を読み込みます。
- まず、2 つの構造が json 形式と一致しているため、ファイルを使用してそれらを読み込み、「Newtonsoft.Json」を通じて json に変換します。
using Newtonsoft.Json;
public struct TileInfo{
public int ID;
public string name;
public string description;
public string path;
};
public struct TilesInfo{
public string version;
public string date;
public Dictionary<string, TileInfo> tiles;
}
public class TilemapBase : MonoBehaviour{
public static TilesInfo tiles_info;
void Start(){
load_tiles_info();
}
void load_tiles_info(){
string tiles_info_path = "Assets/Resources/Saved/TilesInfo.json";
string jsonText = File.ReadAllText(tiles_info_path);
tiles_info = JsonConvert.DeserializeObject<TilesInfo>(jsonText);
}
}
- 以前にハードコーディングされたマテリアル パスを置き換えます
- 注: 命名スタイルを変更したため、前の記事のパスはこの記事のパスとは異なります。
string tile_path = "Tilemap/Block/Soil/BlockSoilGrassySoil";
->
string tile_path = TilemapBase.tiles_info.tiles["BlockSoilGrassySoil"].path;