public override void ShowMessage(DialogShowMessageSettings settings, Action onNext) { ISpeakerInfo s = settings.SpeakerInfo; SetSpeaker(s); if (string.IsNullOrEmpty(settings.Message)) { onNext?.Invoke(); return; } GameObject popObj; if (s == speakerL) { popObj = Instantiate(popMessageL, popParent); } else { popObj = Instantiate(popMessageR, popParent); } var pop = popObj.GetComponent <TalkStyleDialogMessagePop>(); pop.SetMessage(settings, onNext); Pops.Add(pop); DestroyOldPops(); }
private void SetSettings(DialogShowMessageSettings settings, VisualElement settingsField) { var commandProp = CommandItem.CommandProperty.GetProperty(); var settingsProp = commandProp.FindPropertyRelative("settings"); settingsProp.managedReferenceValue = settings; settingsProp.serializedObject.ApplyModifiedProperties(); UpdateSettingsField(settingsField); //次回以降のデフォルトに設定 EditorPrefs.SetString(EditorPrefsDefaultSettingsTypeNameKey, settings.GetType().AssemblyQualifiedName); }
private void BuildCommandEditor(VisualElement root) { var commandProp = CommandItem.CommandProperty.GetProperty(); //DialogShowMessageSettings var settingsProp = commandProp.FindPropertyRelative("settings"); var settingsTypeInfo = settingsProp.managedReferenceFullTypename.Split(' '); string settingsTypeName = ""; if (settingsTypeInfo.Length >= 2) { settingsTypeName = settingsTypeInfo[1]; } else { //Settingsが未設定(null) object settingsInstance; //直前に使用したSettingsを使用する if (EditorPrefs.HasKey(EditorPrefsDefaultSettingsTypeNameKey)) { var defaultSettingsTypeName = EditorPrefs.GetString(EditorPrefsDefaultSettingsTypeNameKey); var settingsType = Type.GetType(defaultSettingsTypeName); if (settingsType == null) { settingsType = typeof(DialogShowMessageSettings); } settingsInstance = Activator.CreateInstance(settingsType); } else { settingsInstance = new DialogShowMessageSettings(); } settingsProp.managedReferenceValue = settingsInstance; settingsProp.serializedObject.ApplyModifiedProperties(); settingsTypeName = settingsInstance.GetType().FullName; } var settingsField = new VisualElement(); var settingsButton = new Button(); settingsButton.text = settingsTypeName.Split('.').Last(); settingsButton.clickable.clicked += () => SettingsTypeMenu(settingsButton, settingsField); var settingsTypeBox = new VisualElement(); settingsTypeBox.style.flexDirection = new StyleEnum <FlexDirection>(FlexDirection.Row); settingsTypeBox.Add(new Label("Settings Type")); settingsTypeBox.Add(settingsButton); root.Add(settingsTypeBox); UpdateSettingsField(settingsField); root.Add(settingsField); root.Bind(CommandItem.CommandProperty.SerializedObject); }