ScriptsFromFile.cs

  1. using UnityEngine;
  2. using System.Collections;
  3. using LuaInterface;
  4. using System;
  5. using System.IO;
  6. /*
  7. 一、require
  8. 1.功能:载入文件并执行代码块,对于相同的文件只执行一次
  9. 2.调用:require(“filename”)
  10. 注:寻找文件的路径在package.path中,print(package.path)即可得到。
  11. 二、dofile
  12. 1.功能:载入文件并执行代码块,对于相同的文件每次都会执行
  13. 2.调用:dofile("filename")
  14. 3.错误处理:如果代码块中有错误则会引发错误
  15. 4.优点:对简单任务而言,非常便捷
  16. 5.缺点:每次载入文件时都会执行程序块
  17. 6.定位:内置操作,辅助函数
  18. */
  19. //展示searchpath 使用,require 与 dofile 区别
  20. public class ScriptsFromFile : MonoBehaviour
  21. {
  22. LuaState lua = null;
  23. private string strLog = "";
  24. void Start ()
  25. {
  26. #if UNITY_5
  27. Application.logMessageReceived += Log; // 收到日志消息时触发的事件
  28. #else
  29. Application.RegisterLogCallback(Log);
  30. #endif
  31. lua = new LuaState();
  32. lua.Start();
  33. //如果移动了ToLua目录,自己手动修复吧,只是例子就不做配置了
  34. string fullPath = Application.dataPath + "\\LuaFramework/ToLua/Examples/02_ScriptsFromFile";
  35. lua.AddSearchPath(fullPath);
  36. }
  37. void Log(string msg, string stackTrace, LogType type)
  38. {
  39. strLog += msg;
  40. strLog += "\r\n";
  41. }
  42. void OnGUI()
  43. {
  44. GUI.Label(new Rect(100, Screen.height / 2 - 100, 600, 400), strLog);
  45. if (GUI.Button(new Rect(50, 50, 120, 45), "DoFile"))
  46. {
  47. strLog = "";
  48. lua.DoFile("ScriptsFromFile.lua");
  49. }
  50. else if (GUI.Button(new Rect(50, 150, 120, 45), "Require"))
  51. {
  52. strLog = "";
  53. lua.Require("ScriptsFromFile");
  54. }
  55. lua.Collect();
  56. lua.CheckTop();
  57. }
  58. void OnApplicationQuit()
  59. {
  60. lua.Dispose();
  61. lua = null;
  62. #if UNITY_5
  63. Application.logMessageReceived -= Log;
  64. #else
  65. Application.RegisterLogCallback(null);
  66. #endif
  67. }
  68. }

ScriptsFromFile.lua

  1. print("This is a script from a utf8 file")
  2. print("tolua: 你好! こんにちは! 안녕하세요!")

?