private void saveClickListener() { saveCurrentSelection(); SpawnSO so = ScriptableObject.CreateInstance <SpawnSO>(); so.spawnTris = new string[_spawns.Count]; for (int i = 0; i < _spawns.Count; i++) { so.spawnTris[i] = string.Join(",", _spawns[i]); } string assetFolderPath = "Resources/Spawns"; EditorUtil.PrepareFolder(assetFolderPath); AssetDatabase.CreateAsset(so, "Assets/" + assetFolderPath + "/" + _spawnSetNameTf.value + ".asset"); }
public override VisualElement CreateInspectorGUI() { _currentEditSpawnZone = -1; VisualElement customInspector = new VisualElement(); _targetSurfaceBind = new ObjectField("Target Surface"); _targetSurfaceBind.RegisterValueChangedCallback(targetSurfaceChanged); _targetSurfaceBind.objectType = typeof(GameObject); _targetSurfaceBind.bindingPath = "targetSurface"; customInspector.Add(_targetSurfaceBind); _preDataBind = new ObjectField("PreData"); _preDataBind.RegisterValueChangedCallback(preDataChanged); _preDataBind.objectType = typeof(PreDataSO); _preDataBind.bindingPath = "preData"; customInspector.Add(_preDataBind); _spawnSObind = new ObjectField("Spawn Data"); _spawnSObind.RegisterValueChangedCallback(spawnDataChanged); _spawnSObind.objectType = typeof(SpawnSO); _spawnSObind.bindingPath = "spawnData"; customInspector.Add(_spawnSObind); _spawnBox = new Box(); customInspector.Add(_spawnBox); List <string> items = new List <string>(); Func <VisualElement> makeItem = () => new Label(); Action <VisualElement, int> bindItem = (e, i) => (e as Label).text = items[i]; const int itemHeight = ITEM_HEIGHT; _spawnZoneList = new ListView(items, itemHeight, makeItem, bindItem); _spawnZoneList.selectionType = SelectionType.Single; _spawnZoneList.onSelectionChange += onItemChosenHandler; //_spawnZoneList.onSelectionChanged += objects => Debug.Log(objects); _spawnBox.Add(_spawnZoneList); Box arBtnBox = new Box(); _spawnBox.Add(arBtnBox); arBtnBox.style.flexDirection = FlexDirection.Row; arBtnBox.style.alignContent = Align.Center; _addSpawZoneBtn = new Button(addSpawnZoneClickListener); _addSpawZoneBtn.text = "Add Spawn Zone"; arBtnBox.Add(_addSpawZoneBtn); _removeSpawZoneBtn = new Button(removeSpawnZoneClickListener); _removeSpawZoneBtn.text = "Remove Current Spawn Zone"; arBtnBox.Add(_removeSpawZoneBtn); _spawnSetNameTf = new TextField("Spawn Set Name"); _spawnBox.Add(_spawnSetNameTf); Button saveBtn = new Button(saveClickListener); saveBtn.text = "Save Spawns"; _spawnBox.Add(saveBtn); SpawnCreation sc = target as SpawnCreation; _targetObject = sc.targetSurface; _preData = sc.preData; _spawnSO = sc.spawnData; checkSRCdata(); return(customInspector); }
private void spawnDataChanged(ChangeEvent <UnityEngine.Object> e) { //тут надо бы проверить на предмет сохранения текущих наработок _spawnSO = e.newValue as SpawnSO; checkSRCdata(); }