Как Загрузить блок в AppDomain со всеми ссылками рекурсивно?

Проблема может заключаться в том, что SceneManager.LoadScene завершается в следующем кадре . См. Документацию: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html

В нем говорится:

При использовании SceneManager .LoadScene, загрузка не происходит сразу, она завершается в следующем кадре. Это полуасинхронное поведение может вызвать заикание кадра и может привести к путанице, потому что загрузка не завершается немедленно.

blockquote>

Вы изменяете значения в одном кадре, поэтому они перезаписываются при завершении загрузки сцены. Ко мог использовать событие, чтобы предотвратить такое поведение: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager-sceneLoaded.html

108
задан Andry 3 May 2017 в 08:38
поделиться

3 ответа

На Вашем новом AppDomain попытайтесь установить обработчик событий AssemblyResolve . То событие называют, когда зависимость отсутствует.

11
ответ дан David 24 November 2019 в 03:33
поделиться

Необходимо обработать AppDomain. AssemblyResolve или AppDomain. События ReflectionOnlyAssemblyResolve (в зависимости от которой загрузки Вы делаете) в случае, если блок, на который ссылаются, не находится в GAC или на пути зондирования CLR.

AppDomain. AssemblyResolve

AppDomain. ReflectionOnlyAssemblyResolve

5
ответ дан Dustin Campbell 24 November 2019 в 03:33
поделиться

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);
14
ответ дан 24 November 2019 в 03:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: