Sandbox.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using Lua;
  3. using Lua.IO;
  4. using Lua.Loaders;
  5. using Lua.Platforms;
  6. using Lua.Standard;
  7. using Lua.Unity;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using UnityEngine;
  11. public class Sandbox : MonoBehaviour
  12. {
  13. async void Start()
  14. {
  15. var state = LuaState.Create( new LuaPlatform(
  16. FileSystem: new FileSystem(Application.streamingAssetsPath),
  17. OsEnvironment: new UnityApplicationOsEnvironment(),
  18. StandardIO: new UnityStandardIO(),
  19. TimeProvider: TimeProvider.System
  20. ));
  21. state.GlobalState.ModuleLoader = CompositeModuleLoader.Create(new AddressablesModuleLoader(), new ResourcesModuleLoader());
  22. state.OpenStandardLibraries();
  23. state.Environment["print"] = new LuaFunction("print", (context, ct) =>
  24. {
  25. Debug.Log(context.GetArgument<string>(0));
  26. return new(0);
  27. });
  28. try
  29. {
  30. await state.DoStringAsync(
  31. @"
  32. print('test start')
  33. local foo = require 'foo'
  34. foo.greet()
  35. local bar = require 'bar'
  36. bar.greet()
  37. require 'test'
  38. local s =require 'streaming'
  39. s.f()
  40. ", cancellationToken: destroyCancellationToken);
  41. }
  42. catch (Exception ex)
  43. {
  44. Debug.LogException(ex);
  45. }
  46. }
  47. MeshTopology[ ] topologies = Enum.GetValues(typeof(MeshTopology)) as MeshTopology[];
  48. public bool ContainsTriangle;
  49. void Update()
  50. {
  51. if (Input.GetKeyDown(KeyCode.Space))
  52. {
  53. ContainsTriangle=(topologies.Contains( MeshTopology.Points));
  54. Debug.Break();
  55. }
  56. if (Input.GetKeyDown(KeyCode.A))
  57. {
  58. ContainsTriangle=(ContainsInArray(topologies, MeshTopology.Points));
  59. Debug.Break();
  60. }
  61. }
  62. bool ContainsInArray<T>(T[] array, T value)
  63. {
  64. foreach (var item in array)
  65. {
  66. if (EqualityComparer<T>.Default.Equals(item, value))
  67. {
  68. return true;
  69. }
  70. }
  71. return false;
  72. }
  73. }