📝

UnityでJsonUtilityを使ってクラスをシリアライズした時のJSONのキー名を取得する

2023/06/27に公開
using System;
using System.Linq;
using UnityEngine;
using System.Reflection;

public static class JsonKey
{
	public static string[] GetKeys<T>()
	{
		return typeof(T).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Where(f => f.IsPublic || Attribute.IsDefined(f, typeof(SerializeField))).Select(f => f.Name).ToArray();
	}

	public static void CopyKeys<T>()
	{
		GUIUtility.systemCopyBuffer = string.Join("\t ", GetKeys<T>());
	}
}

呼び出しは JsonKey.CopyKeys<MyClassData> という感じになります。

スプレッドシートでマスタデータみたいなものを作りたいけど、ゴツいことをやりたくなかったので
https://cly7796.net/blog/other/generate-json-from-spreadsheet/

でJSONで書き出したテキストをUnityで読み込ませるのが楽かなと思い、クラスの変数部分を楽にスプレッドシートに貼れるようにしたくてつくった感じでした。

Discussion