这是个人项目中一个通过读表自动生成Buff的功能脚本,
其中有一个通过字符串获取指定类型Type的知识点,和将其变换为Scriptableobject的存储流程。
希望能够帮助到你。
这是原脚本如果有需要的话,可以下载参考
核心代码
// ClassName 类名 Data 对应类的字符串数据
public static void InsBuffInstence(string ClassName, BuffDatas Data)
{
//GetType用法,后续需要程序集名字,如果没有,则是默认,就是下面的字符串。
Type t = Type.GetType(ClassName + ",Assembly-CSharp");
if (t == null)
{
Debug.Log("脚本变量名不存在" + ClassName);
return;
}
//在这里进行Scriptobject的初始化生成, 这里初始赋值之后直接调用Scriptable可以省下一点初始化工作
BuffBase buffBase = ScriptableObject.CreateInstance(t) as BuffBase;
buffBase.OnAwake(Data);//初始化
insBuffData.Add(Data.buffID, buffBase);
//保存 -- 注:路径为从Unity中 Asset开始
AssetDatabase.CreateAsset(buffBase, Savepath + Data.buffName + ".asset");
//存储
AssetDatabase.SaveAssets();
//刷新
AssetDatabase.Refresh();
}