forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Динамическая подгрузка скриптов C# eval (http://forum.boolean.name/showthread.php?t=20539)

Evgen 20.01.2017 09:39

Динамическая подгрузка скриптов C# eval
 
Можно ли динамический из файла подгрузить скрипт на c#. Что-то вроде Eval в Java. Будет ли код иметь доступ к другим классам. Кто-нибудь пробовал так делать?

Прмер в тему, но не на mono:
http://stackoverflow.com/questions/5...on-dynamically

Evgen 20.01.2017 10:18

Ответ: Динамическая подгрузка скриптов C# eval
 
Eval работает. Использовал данный пример:
https://forum.unity3d.com/threads/mo...luator.102162/

На androide Наверно работать не будет.

pax 20.01.2017 11:29

Ответ: Динамическая подгрузка скриптов C# eval
 
На андроиде может и будет, но точно не на iOS.

Evgen 20.01.2017 11:33

Ответ: Динамическая подгрузка скриптов C# eval
 
Цитата:

Сообщение от pax (Сообщение 311482)
На андроиде может и будет, но точно не на iOS.

Чтобы пример работал, нужно cкопировать Mono.CSharp.dll в папку Plugins... Я не уверен что она совместима с android... Хотя может она на каком-то универсальном байт коде написанна.

Как-то давно делал данный трюк на Java через Eval. Было занятно, пишешь код в телефоне, и в сцене создаются объекты. В общем можно ИИ писать и т.д. Но сейчас мой проект на Си. Поэтому приходится изворачиваться. Или делать смешанный проект основной код на Си, ИИ на Java. Но тут я не знаю будет ли доступ из Eval в переменные классов C#, а он нужен.

RegIon 20.01.2017 11:53

Ответ: Динамическая подгрузка скриптов C# eval
 
Цитата:

Сообщение от pax (Сообщение 311482)
На андроиде может и будет, но точно не на iOS.

Если illCpp, то везде работать не будет.

pax, юзал CloudBuild?Это нормально, что если поставить метод сборки для Android ill2cpp, то он не собирается?
Просто хотел проверить насколько он быстрее был бы:rolleyes:

pax 20.01.2017 15:03

Ответ: Динамическая подгрузка скриптов C# eval
 
Цитата:

Сообщение от RegIon (Сообщение 311484)
Если illCpp, то везде работать не будет.

Хорошее замечание.

Цитата:

Сообщение от RegIon (Сообщение 311484)
pax, юзал CloudBuild?Это нормально, что если поставить метод сборки для Android ill2cpp, то он не собирается?
Просто хотел проверить насколько он быстрее был бы:rolleyes:

Нет не юзал еще. Ну и не думаю, что будет сильно отличаться от соотношения скоростей билда на своем компе.

RegIon 20.01.2017 15:08

Ответ: Динамическая подгрузка скриптов C# eval
 
Цитата:

Сообщение от pax (Сообщение 311490)
Нет не юзал еще. Ну и не думаю, что будет сильно отличаться от соотношения скоростей билда на своем компе.

Да я просто хотел разгрузить комп, так как трансляция что-то довольно долго происходит.
Да и NDK весит 3GB

pax, вот я вот попытался нативку собрать, 20 минут ждал и получил CrashBuildError. Причину не нашел.

Log:

Код:


(Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

Invoking UnusedByteCodeStripper2 with arguments: --api NET_2_0 -out "D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\tempStrip" -l none -c link -b False -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Core.xml" -f "D:\programs\Unity5.5\Editor\Data\il2cpp\LinkerDescriptors" -x "D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\..\platform_native_link.xml" -x "D:\_eX_\NaZakaz\CircleRun/Temp/StagingArea\assets\bin\Data/methods_pointedto_by_uievents.xml" -x "D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\preserved_derived_types.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\AI.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Animation.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Audio.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Cloth.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Core.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\CrashReporting.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\IMGUI.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\JSONSerialize.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\ParticlesLegacy.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\ParticleSystem.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Physics.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Physics2D.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Terrain.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\TerrainPhysics.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\TextRendering.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UI.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UNET.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityAds.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityAnalytics.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityConnect.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityWebRequest.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Vehicles.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\VR.xml" -x "D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Web.xml" -d "D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed" -a  "D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\Assembly-CSharp.dll" -a  "D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\UnityEngine.UI.dll"
D:\programs\Unity5.5\Editor\Data\Tools/UnusedByteCodeStripper2/UnusedBytecodeStripper2.exe exited after 2527 ms.
D:\programs\Unity5.5\Editor\Data\Tools/InternalCallRegistrationWriter/InternalCallRegistrationWriter.exe exited after 344 ms.
Invoking il2cpp with arguments: --convert-to-cpp --emit-null-checks --enable-array-bounds-check --compile-cpp --libil2cpp-static --platform="Android" --architecture="ARMv7" --configuration="Release" --outputpath="D:\_eX_\NaZakaz\CircleRun\Temp/StagingArea\assets\bin\Data\Native\armeabi-v7a\libil2cpp.so" --cachedirectory="D:\_eX_\NaZakaz\CircleRun\Assets\..\Library\il2cpp_android_armeabi-v7a/il2cpp_cache" --additional-include-directories="D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\bdwgc/include" --additional-include-directories="D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\libil2cpp/include" --tool-chain-path="C:/android-ndk-r10e-windows-x86_64/android-ndk-r10e" --extra-types.file="D:\programs\Unity5.5\Editor\Data\il2cpp\il2cpp_default_extra_types.txt" --assembly="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\Assembly-CSharp.dll" --assembly="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\UnityEngine.UI.dll" --assembly="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\UnityEngine.dll" --generatedcppdir="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\Il2Cpp\il2cppOutput"
D:\programs\Unity5.5\Editor\Data\il2cpp/build/il2cpp.exe exited after 530476 ms.
Failed running D:\programs\Unity5.5\Editor\Data\il2cpp/build/il2cpp.exe --convert-to-cpp --emit-null-checks --enable-array-bounds-check --compile-cpp --libil2cpp-static --platform="Android" --architecture="ARMv7" --configuration="Release" --outputpath="D:\_eX_\NaZakaz\CircleRun\Temp/StagingArea\assets\bin\Data\Native\armeabi-v7a\libil2cpp.so" --cachedirectory="D:\_eX_\NaZakaz\CircleRun\Assets\..\Library\il2cpp_android_armeabi-v7a/il2cpp_cache" --additional-include-directories="D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\bdwgc/include" --additional-include-directories="D:\programs\Unity5.5\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\libil2cpp/include" --tool-chain-path="C:/android-ndk-r10e-windows-x86_64/android-ndk-r10e" --extra-types.file="D:\programs\Unity5.5\Editor\Data\il2cpp\il2cpp_default_extra_types.txt" --assembly="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\Assembly-CSharp.dll" --assembly="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\UnityEngine.UI.dll" --assembly="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Managed\UnityEngine.dll" --generatedcppdir="D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\Il2Cpp\il2cppOutput"

stdout:
Building libil2cpp.so with AndroidToolChain.
        Output directory: D:\_eX_\NaZakaz\CircleRun\Temp\StagingArea\assets\bin\Data\Native\armeabi-v7a
        Cache directory: D:\_eX_\NaZakaz\CircleRun\Library\il2cpp_android_armeabi-v7a\il2cpp_cache
ObjectFiles: 454 of which compiled: 87
        Time Compile: 90186 milliseconds Bulk_mscorlib_7.cpp
        Time Compile: 80841 milliseconds Il2CppAttributes.cpp
        Time Compile: 79546 milliseconds Bulk_Generics_6.cpp
        Time Compile: 70556 milliseconds Il2CppInvokerTable.cpp
        Time Compile: 66459 milliseconds Bulk_mscorlib_1.cpp
        Time Compile: 60135 milliseconds Bulk_System.Xml_1.cpp
        Time Compile: 59347 milliseconds Bulk_System_2.cpp
        Time Compile: 58874 milliseconds Bulk_UnityEngine.UI_0.cpp
        Time Compile: 55040 milliseconds Bulk_System.Xml_2.cpp
        Time Compile: 52270 milliseconds Bulk_mscorlib_8.cpp
Total compilation time: 435554 milliseconds.
il2cpp.exe didn't catch exception: Unity.IL2CPP.Building.BuilderFailedException: @"C:\Users\eXponenta\AppData\Local\Temp\tmpFAE6.tmp" -o "D:\_eX_\NaZakaz\CircleRun\Library\il2cpp_android_armeabi-v7a\il2cpp_cache\linkresult_A61B2CB66E9E64B415900878F23D91C6\libil2cpp.so" -Wl,-soname,libil2cpp.so -shared -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--gc-sections -Wl,--build-id --sysroot "C:\android-ndk-r10e-windows-x86_64\android-ndk-r10e\platforms\android-9\arch-arm" -gcc-toolchain "C:\android-ndk-r10e-windows-x86_64\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64" -target armv7-none-linux-androideabi -L "C:\android-ndk-r10e-windows-x86_64\android-ndk-r10e\sources\cxx-stl\gnu-libstdc++\4.9\libs\armeabi-v7a" -lgnustl_static -fuse-ld=gold



  at Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(IEnumerable`1 objectFiles, CppToolChainContext toolChainContext)
  at Unity.IL2CPP.Building.CppProgramBuilder.Build()
  at il2cpp.Program.DoRun(String[] args)
  at il2cpp.Program.Run(String[] args)
  at il2cpp.Program.Main(String[] args)
stderr:

Unhandled Exception: Unity.IL2CPP.Building.BuilderFailedException: @"C:\Users\eXponenta\AppData\Local\Temp\tmpFAE6.tmp" -o "D:\_eX_\NaZakaz\CircleRun\Library\il2cpp_android_armeabi-v7a\il2cpp_cache\linkresult_A61B2CB66E9E64B415900878F23D91C6\libil2cpp.so" -Wl,-soname,libil2cpp.so -shared -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--gc-sections -Wl,--build-id --sysroot "C:\android-ndk-r10e-windows-x86_64\android-ndk-r10e\platforms\android-9\arch-arm" -gcc-toolchain "C:\android-ndk-r10e-windows-x86_64\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64" -target armv7-none-linux-androideabi -L "C:\android-ndk-r10e-windows-x86_64\android-ndk-r10e\sources\cxx-stl\gnu-libstdc++\4.9\libs\armeabi-v7a" -lgnustl_static -fuse-ld=gold



  at Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(IEnumerable`1 objectFiles, CppToolChainContext toolChainContext)
  at Unity.IL2CPP.Building.CppProgramBuilder.Build()
  at il2cpp.Program.DoRun(String[] args)
  at il2cpp.Program.Run(String[] args)
  at il2cpp.Program.Main(String[] args)

UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object)
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at C:\buildslave\unity\build\Editor\Mono\BuildPipeline\BuildUtils.cs:96)
UnityEditorInternal.IL2CPPBuilder:RunIl2CppWithArguments(List`1, Action`1, String) (at C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:281)
UnityEditorInternal.IL2CPPBuilder:ConvertPlayerDlltoCpp(ICollection`1, String, String) (at C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:272)
UnityEditorInternal.IL2CPPBuilder:Run() (at C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:126)
UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry, Boolean) (at C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:32)
UnityEditor.Android.PostProcessor.Tasks.RunIl2Cpp:Execute(PostProcessorContext)
UnityEditor.Android.PostProcessor.PostProcessRunner:RunAllTasks(PostProcessorContext)
UnityEditor.Android.PostProcessAndroidPlayer:PostProcess(BuildTarget, String, String, String, String, String, String, BuildOptions, RuntimeClassRegistry)
UnityEditor.Android.AndroidBuildPostprocessor:PostProcess(BuildPostProcessArgs)
UnityEditor.PostprocessBuildPlayer:Postprocess(BuildTarget, String, String, String, Int32, Int32, String, String, BuildOptions, RuntimeClassRegistry, BuildReport) (at C:\buildslave\unity\build\Editor\Mono\BuildPipeline\PostprocessBuildPlayer.cs:186)
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTarget, BuildOptions, Boolean)
UnityEditor.BuildPlayerWindow:BuildPlayerWithDefaultSettings(Boolean, BuildOptions, Boolean) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:464)
UnityEditor.BuildPlayerWindow:BuildPlayerWithDefaultSettings(Boolean, BuildOptions) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:321)
UnityEditor.BuildPlayerWindow:GUIBuildButtons(IBuildWindowExtension, Boolean, Boolean, Boolean, BuildPlatform) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:1364)
UnityEditor.BuildPlayerWindow:ShowBuildTargetSettings() (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:1291)
UnityEditor.BuildPlayerWindow:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:887)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:249)
UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:242)
UnityEditor.HostView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:76)
 
(Filename: /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs Line: 222)

Exception: D:\programs\Unity5.5\Editor\Data\il2cpp/build/il2cpp.exe did not run properly!
  at UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1 setupStartInfo) [0x00170] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\BuildUtils.cs:98
  at UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1 arguments, System.Action`1 setupStartInfo, System.String workingDirectory) [0x0004a] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:281
  at UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (ICollection`1 userAssemblies, System.String outputDirectory, System.String workingDirectory) [0x00267] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:272
  at UnityEditorInternal.IL2CPPBuilder.Run () [0x00099] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:126
  at UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String tempFolder, System.String stagingAreaData, IIl2CppPlatformProvider platformProvider, System.Action`1 modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry, Boolean developmentBuild) [0x00010] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:32
  at UnityEditor.Android.PostProcessor.Tasks.RunIl2Cpp.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) [0x00000] in <filename unknown>:0
  at UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) [0x00000] in <filename unknown>:0
  at UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry) [0x00000] in <filename unknown>:0
  at UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args) [0x00000] in <filename unknown>:0
  at UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) [0x000d4] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\PostprocessBuildPlayer.cs:186
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTarget, BuildOptions, Boolean)
UnityEditor.BuildPlayerWindow:BuildPlayerWithDefaultSettings(Boolean, BuildOptions, Boolean) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:464)
UnityEditor.BuildPlayerWindow:BuildPlayerWithDefaultSettings(Boolean, BuildOptions) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:321)
UnityEditor.BuildPlayerWindow:GUIBuildButtons(IBuildWindowExtension, Boolean, Boolean, Boolean, BuildPlatform) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:1364)
UnityEditor.BuildPlayerWindow:ShowBuildTargetSettings() (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:1291)
UnityEditor.BuildPlayerWindow:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:887)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:249)
UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:242)
UnityEditor.HostView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:76)
 
(Filename: C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs Line: 98)

Exception: D:\programs\Unity5.5\Editor\Data\il2cpp/build/il2cpp.exe did not run properly!
  at UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1 setupStartInfo) [0x00170] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\BuildUtils.cs:98
  at UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1 arguments, System.Action`1 setupStartInfo, System.String workingDirectory) [0x0004a] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:281
  at UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (ICollection`1 userAssemblies, System.String outputDirectory, System.String workingDirectory) [0x00267] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:272
  at UnityEditorInternal.IL2CPPBuilder.Run () [0x00099] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:126
  at UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String tempFolder, System.String stagingAreaData, IIl2CppPlatformProvider platformProvider, System.Action`1 modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry, Boolean developmentBuild) [0x00010] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\Il2Cpp\IL2CPPUtils.cs:32
  at UnityEditor.Android.PostProcessor.Tasks.RunIl2Cpp.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) [0x00000] in <filename unknown>:0
  at UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) [0x00000] in <filename unknown>:0
  at UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry) [0x00000] in <filename unknown>:0
  at UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args) [0x00000] in <filename unknown>:0
  at UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) [0x000d4] in C:\buildslave\unity\build\Editor\Mono\BuildPipeline\PostprocessBuildPlayer.cs:186
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTarget, BuildOptions, Boolean)
UnityEditor.BuildPlayerWindow:BuildPlayerWithDefaultSettings(Boolean, BuildOptions, Boolean) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:464)
UnityEditor.BuildPlayerWindow:BuildPlayerWithDefaultSettings(Boolean, BuildOptions) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:321)
UnityEditor.BuildPlayerWindow:GUIBuildButtons(IBuildWindowExtension, Boolean, Boolean, Boolean, BuildPlatform) (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:1364)
UnityEditor.BuildPlayerWindow:ShowBuildTargetSettings() (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:1291)
UnityEditor.BuildPlayerWindow:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindow.cs:887)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
System.Reflection.MethodBase:Invoke(Object, Object[]) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:249)
UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:242)
UnityEditor.HostView:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:76)
 
(Filename: C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs Line: 98)


pax 20.01.2017 21:31

Ответ: Динамическая подгрузка скриптов C# eval
 
Я с андроидом особо не развлекался еще, особенно с нативом. Так что помочь с этим не могу.

Evgen 06.02.2017 16:31

Ответ: Динамическая подгрузка скриптов C# eval
 
Есть некий Mono.CSharp.Evaluator позволяет выполнять C# код. Вот примерчик. Штука интересная, на android пока не пробовал.

Код:

using UnityEngine;
using System.Collections;
using Mono.CSharp;
using System;

public class EvalManager : MonoBehaviour
{
    public static EvalManager instance;
    string cmd = "for(int i=0;i<50;i++){\r\n" +
        "GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);\r\n" +
        "cube.transform.position = new Vector3(Random.Range(0,90), Random.Range(0,90), 2);\r\n" +
        "cube.transform.rotation = Quaternion.Euler(Random.Range(0,90),Random.Range(0,90),Random.Range(0,90));\r\n" +
        "}\r\n" +
        "Log.Print(\"Test\",true);";
   
    void Awake ()
    {
        instance = this;
    }
   
    void Start ()
    {
        int cnt = 0;
        while (cnt < 2) {
            // this needs to be run twice, as the references fail the first time through
            foreach (System.Reflection.Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) {
                if (assembly == null) {
                    Debug.Log ("Null Assembly");
                    continue;
                }
                Debug.Log (assembly);
                try {
                    Mono.CSharp.Evaluator.ReferenceAssembly (assembly);
                } catch (NullReferenceException e) {
                    Debug.Log ("Bad Assembly");
                }
            }
            Mono.CSharp.Evaluator.Evaluate ("1+2;");
            cnt++;
        }
       
        Mono.CSharp.Evaluator.Run("using UnityEngine;");
        Debug.Log (Mono.CSharp.Evaluator.GetUsing ());
    }
   
    public object Run (string cmd)
    {
        //Run executes the code, and returns true if it was succesful and false if it did not parse
        // for example GameObject.Find("MyGameObject").transform.Translate( new Vector3(0, 2, 0));
        Debug.Log ("Run:"+cmd);
        object result = Mono.CSharp.Evaluator.Run (cmd);
        Debug.Log ("Run Result:"+result);
        return result;
    }
   
    public object Eval (string cmd)
    {
        // Evaluate requires a value as the last statement;
        // So you can do "typeof(GameObject);", but not "var a = typeof(GameObject);"
        Debug.Log ("Eval:"+cmd);
        object result = Mono.CSharp.Evaluator.Evaluate (cmd);
        Debug.Log ("Eval Result:"+result);
        return result;
    }
   
      void OnGUI() {
        int y = Screen.height - 120;
        cmd = GUI.TextArea (new Rect (90, y, 500, 120), cmd);
        if (GUI.Button (new Rect (10, y, 80, 20), "Eval:")) {
            Eval (cmd);
        }
        if (GUI.Button (new Rect (10, y+20, 80, 20), "Run:")) {
            Run (cmd);
        }
    }
}


Evgen 06.02.2017 20:20

Ответ: Динамическая подгрузка скриптов C# eval
 
Для работы нужна dll либа:
https://forum.unity3d.com/threads/mo...luator.102162/

На андроиде не работает.

И eval на андроиде вроде тоже не работает. Хотя раньше думал что работает...

Evgen 23.12.2017 21:40

Ответ: Динамическая подгрузка скриптов C# eval
 
P.S. Судя по ScriptingRestrictions Android если он Mono то должен поддерживать динамический Eval. А вот Android при IL2CPP поддерживает только Ahead-of-time compile.

pax 24.12.2017 09:10

Ответ: Динамическая подгрузка скриптов C# eval
 
а через год будет только il2cpp

Evgen 24.12.2017 13:20

Ответ: Динамическая подгрузка скриптов C# eval
 
Ну значит все будет Ahead-of-time compile, кроме StandAlone.

pax 24.12.2017 15:21

Ответ: Динамическая подгрузка скриптов C# eval
 
В стандалон оно тоже придет со временем, планы такие у Unity были. Просто в приоритете сейчас мобильные платформы.


Часовой пояс GMT +4, время: 07:09.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot