示例#1
0
 public static ModuleBlock Create(SerializedProperty property, ItemModule module)
 {
     foreach (var type in TypeCache.GetTypesWithAttribute <CustomMuduleDrawerAttribute>())
     {
         if (typeof(ModuleBlock).IsAssignableFrom(type))
         {
             var attr = type.GetCustomAttribute <CustomMuduleDrawerAttribute>();
             if (attr.useForChildren ? attr.type.IsAssignableFrom(module.GetType()) : (attr.type == module.GetType()))
             {
                 return(Activator.CreateInstance(type, property, module) as ModuleBlock);
             }
         }
     }
     return(new ModuleBlock(property, module));
 }
示例#2
0
        private void DeleteModule(ItemModule module)
        {
            IList <ItemModule> modules = null;

            switch (funcTab.SelectedIndex)
            {
            case 1:
                modules = selectedItem.Modules;
                break;

            case 2:
                modules = selectedTemplate.Modules;
                break;
            }
            foreach (var exist in modules)
            {
                Type type = exist.GetType();
                var  attr = type.GetCustomAttribute <ItemModule.RequireAttribute>();
                if (attr != null && attr.modules.Contains(module.GetType()))
                {
                    EditorUtility.DisplayDialog("无法移除", $"因为 [{ItemModule.GetName(type)}] 模块依赖于此模块,暂时无法移除。", "确定");
                    return;
                }
            }
            switch (funcTab.SelectedIndex)
            {
            case 1:
                Undo.RegisterCompleteObjectUndo(selectedItem, $"从道具{selectedItem.Name}删除模块");
                if (ItemNew.Editor.RemoveModule(selectedItem, module))
                {
                    RefreshModules();
                }
                break;

            case 2:
                Undo.RegisterCompleteObjectUndo(selectedTemplate, $"从模板{selectedTemplate.Name}删除模块");
                if (ItemTemplate.Editor.RemoveModule(selectedTemplate, module))
                {
                    RefreshModules();
                }
                break;
            }
        }
示例#3
0
 private void EditScript(ItemModule module)
 {
     if (module != null)
     {
         var script = ZetanUtility.Editor.LoadAssets <MonoScript>().Find(x => x.GetClass() == module.GetType());
         if (script)
         {
             AssetDatabase.OpenAsset(script);
         }
     }
 }