You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动触发继承DatabaseTable类的数据库脚本生成?

自动化生成数据库脚本的实现思路

方案一:监听DatabaseTable子类的创建

  • 基于Unity的AssetPostprocessor类,重写OnPostprocessAllAssets方法,过滤出新增的C#脚本文件。
  • 读取脚本文本内容,用字符串匹配或正则表达式(比如public class \w+ :\s*DatabaseTable)判断是否为DatabaseTable的子类。
  • 确认符合条件后,直接调用原MenuItem对应的静态生成函数——无需通过菜单点击,直接通过类名+方法名调用即可。
  • 可维护一个已处理类的缓存列表(存在EditorPrefs或本地文件),避免重复触发生成逻辑。

方案二:监听指定文件夹的脚本创建(处理默认继承问题)

  • 同样依托AssetPostprocessor,先判断新增脚本的路径是否在目标存放文件夹下。
  • 对该文件夹下的新脚本,自动修正继承关系:用正则匹配替换默认的MonoBehaviour为DatabaseTable,比如匹配:\s*MonoBehaviour替换成: DatabaseTable,兼容不同格式写法(如带访问修饰符、换行的情况)。
  • 修改完成后调用File.WriteAllText()保存脚本,再执行AssetDatabase.Refresh()确保Unity识别变更,之后触发生成函数。
  • 额外判断:若脚本已为DatabaseTable子类,直接跳过替换步骤,执行生成逻辑。

鲁棒性优化建议

  • 增加异常捕获:解析或修改脚本时出错,在Console打印警告,避免Editor逻辑崩溃。
  • 添加手动开关:用EditorPrefs.SetBool("AutoGenerateDatabase", true)实现开关功能,方便调试时关闭自动化。
  • 支持批量处理:一次导入多个脚本时,收集所有符合条件的类后一次性执行生成,提升效率。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:43:11