Пример #1
0
 public MakableBlock(SerializedProperty property, ItemModule module) : base(property, module)
 {
     makingMethod = property.FindPropertyRelative("makingMethod");
     canMakeByTry = property.FindPropertyRelative("canMakeByTry");
     formulation  = property.FindAutoPropertyRelative("Formulation");
     yields       = property.FindAutoPropertyRelative("Yields");
     list         = new ReorderableList(property.serializedObject, yields)
     {
         drawElementCallback = (rect, index, isActive, isFocused) =>
         {
             SerializedProperty element = yields.GetArrayElementAtIndex(index);
             SerializedProperty yield   = element.FindAutoPropertyRelative("Yield");
             SerializedProperty rate    = element.FindAutoPropertyRelative("Rate");
             EditorGUI.LabelField(new Rect(rect.x, rect.y, 50, EditorGUIUtility.singleLineHeight), "产量");
             yield.intValue = EditorGUI.IntField(new Rect(rect.x + 52, rect.y, 100, EditorGUIUtility.singleLineHeight), yield.intValue);
             if (yield.intValue < 1)
             {
                 yield.intValue = 1;
             }
             EditorGUI.LabelField(new Rect(rect.x + 154, rect.y, 50, EditorGUIUtility.singleLineHeight), "概率");
             rate.floatValue = EditorGUI.Slider(new Rect(rect.x + 206, rect.y, rect.width - 206, EditorGUIUtility.singleLineHeight), rate.floatValue, 0, 1);
         },
         elementHeightCallback = (index) =>
         {
             return(EditorGUIUtility.singleLineHeight);
         },
         onCanRemoveCallback = (list) =>
         {
             return(yields.arraySize > 1 && list.IsSelected(list.index));
         },
         headerHeight = 0,
     };
 }
Пример #2
0
 private void OnAddDropdownElement(Rect rect, ReorderableList list)
 {
     if (0 <= list.index && list.index < tile.m_TilingRules.Count && list.IsSelected(list.index))
     {
         GenericMenu menu = new GenericMenu();
         menu.AddItem(EditorGUIUtility.TrTextContent("Add"), false, OnAddElement, list);
         menu.AddItem(EditorGUIUtility.TrTextContent("Duplicate"), false, OnDuplicateElement, list);
         menu.DropDown(rect);
     }
     else
     {
         OnAddElement(list);
     }
 }
Пример #3
0
        private void OnAddElement(ReorderableList list)
        {
            var count = tile.m_AnimatedSprites != null ? tile.m_AnimatedSprites.Length + 1 : 1;

            ResizeAnimatedSpriteList(count);

            if (list.index == 0 || list.index < list.count)
            {
                Array.Copy(tile.m_AnimatedSprites, list.index + 1, tile.m_AnimatedSprites, list.index + 2, list.count - list.index - 1);
                tile.m_AnimatedSprites[list.index + 1] = null;
                if (list.IsSelected(list.index))
                {
                    list.index += 1;
                }
            }
            else
            {
                tile.m_AnimatedSprites[count - 1] = null;
            }
        }