zoukankan      html  css  js  c++  java
  • Script.NET实现脚本库

      Script.NET本身没有实现调用脚本库的功能。如果将一堆已经定义好的函数放在一个脚本文件里头作为脚本库,要调用这个脚本库时只需要稍作改动就行。

    首先建立一个XML文档专门存放哪个脚本会调用哪些库,结构如下

    复制代码
    <?xml version="1.0" encoding="utf-8" ?>
    <LibMapping>
      <MainScript scriptName="">
        <LibScript libFileName=""/>
      </MainScript>
    </LibMapping>
    复制代码

    例如:

    复制代码
    <?xml version="1.0" encoding="utf-8" ?>
    <LibMapping>
      <MainScript scriptName="script1.txt">
        <LibScript libFileName="lib1.txt"/>
        <LibScript libFileName="lib3.txt"/>
      </MainScript>
      <MainScript scriptName="script2.txt">
        <LibScript libFileName="lib1.txt"/>
        <LibScript libFileName="lib2.txt"/>
      </MainScript>
    </LibMapping>
    复制代码

    然后在执行脚本之前分析XML,通过scriptName属性找出它需要调用的脚本库,利用IO操作读取脚本库文件并添加到脚本的字符串中,代码如下

    复制代码
                string script = string.Empty;
                script += File.ReadAllText("script1.txt")+"
    ";//读取脚本文件
                
                string libScript = string.Empty;
                //分析XML文件
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("LibMapping.xml");
                XmlNode mainNode = xmlDoc.SelectSingleNode(string.Format("//LibMapping/MainScript[@scriptName='{0}']", "script1.txt"));
                if (mainNode != null)
                {
                    XmlNodeList libList = mainNode.ChildNodes;
                    //读取脚本库
                    foreach (XmlNode node in libList)
                    {
                        string fileName = node.Attributes["libFileName"].Value;
                        libScript += File.ReadAllText( fileName) + "
    ";
                    }
                }
                script+= libScript;
    Script s = Script.Compile(script);
    复制代码

    这样做的弊端是调试时不方便,如果脚本代码出错或有异常,简单的字符串拼接会使出错代码的行数有可能不正确,查找错误代码时有困难,希望有哪位大侠给出更好的解决办法。

  • 相关阅读:
    Unity3D AssetBundle相关
    [转]Unity3D新手引导开发手记
    努力多彩
    js sendBeacon
    js document.activeElement及使用
    js requestAnimationFrame
    js 1+'2' == '1'+'2'
    js scrollIntoViewIfNeeded
    汉字 3个字节
    js 浅拷贝和深拷贝
  • 原文地址:https://www.cnblogs.com/zhaolizhe/p/6923564.html
Copyright © 2011-2022 走看看