Проблема может заключаться в том, что SceneManager.LoadScene
завершается в следующем кадре . См. Документацию: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html
В нем говорится:
При использовании SceneManager .LoadScene, загрузка не происходит сразу, она завершается в следующем кадре. Это полуасинхронное поведение может вызвать заикание кадра и может привести к путанице, потому что загрузка не завершается немедленно.
blockquote>Вы изменяете значения в одном кадре, поэтому они перезаписываются при завершении загрузки сцены. Ко мог использовать событие, чтобы предотвратить такое поведение: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager-sceneLoaded.html
На Вашем новом AppDomain попытайтесь установить обработчик событий AssemblyResolve . То событие называют, когда зависимость отсутствует.
Необходимо обработать AppDomain. AssemblyResolve или AppDomain. События ReflectionOnlyAssemblyResolve (в зависимости от которой загрузки Вы делаете) в случае, если блок, на который ссылаются, не находится в GAC или на пути зондирования CLR.
http://support.microsoft.com/kb/837908/en-us
Версия C#:
Создайте класс модератора и наследуйте его от MarshalByRefObject
:
class ProxyDomain : MarshalByRefObject
{
public Assembly GetAssembly(string assemblyPath)
{
try
{
return Assembly.LoadFrom(assemblyPath);
}
catch (Exception ex)
{
throw new InvalidOperationException(ex.Message);
}
}
}
вызов с сайта клиента
ProxyDomain pd = new ProxyDomain();
Assembly assembly = pd.GetAssembly(assemblyFilePath);