void Setup(Vrm10Instance instance) { if (instance.Vrm != null) { // OK return; } if (!CheckHumanoid(instance.gameObject)) { // can not return; } EditorGUILayout.HelpBox("Humanoid OK.", MessageType.Info); if (GUILayout.Button("Create new VRM10Object")) { var saveName = (instance.name ?? "vrm-1.0"); var dir = SaveFileDialog.GetDir(SaveTitle, saveName); if (!string.IsNullOrEmpty(dir)) { var expressions = new Dictionary <ExpressionPreset, VRM10Expression>(); foreach (ExpressionPreset expression in System.Enum.GetValues(typeof(ExpressionPreset))) { if (expression == ExpressionPreset.custom) { continue; } expressions[expression] = CreateAndSaveExpression(expression, dir); } var path = System.IO.Path.Combine(dir, (instance.name ?? "VRMObject") + ".asset"); var asset = CreateAsset(path, expressions); if (asset != null) { // update editor serializedObject.Update(); var prop = serializedObject.FindProperty(nameof(Vrm10Instance.Vrm)); prop.objectReferenceValue = asset; serializedObject.ApplyModifiedProperties(); } } } }