“ScreenBase”的版本间的差异

来自骑砍中文百科
跳转至: 导航搜索
(创建页面,内容为“[https://docs.bannerlordmodding.com/_gauntlet/screenbase.html <big>访问源文档</big>]<br> <big>返回目录</big><br> <br>…”)
 
(已保护“ScreenBase”([编辑=仅允许管理员](无限期)[移动=仅允许管理员](无限期)))
 
(没有差异)

2020年4月24日 (五) 23:02的最新版本

访问源文档
返回目录

你可以通过Screen组织和实例化你的 ViewModelsMovies 为了避免一些问题,请在创建Screen时使用以下模板:

public class MyExampleScreen : ScreenBase
{

    private MyExampleVM _dataSource;
    private GauntletLayer _gauntletLayer;
    private GauntletMovie _movie;

    protected override void OnInitialize()
    {
        base.OnInitialize();
        _dataSource = new MyExampleVM();
        _gauntletLayer = new GauntletLayer(100)
        {
            IsFocusLayer = true
        };
        AddLayer(_gauntletLayer);
        _gauntletLayer.InputRestrictions.SetInputRestrictions();
        _movie = _gauntletLayer.LoadMovie("MyExampleMovie", _dataSource);
    }

    protected override void OnActivate()
    {
        base.OnActivate();
        ScreenManager.TrySetFocus(_gauntletLayer);
    }

    protected override void OnDeactivate()
    {
        base.OnDeactivate();
        _gauntletLayer.IsFocusLayer = false;
        ScreenManager.TryLoseFocus(_gauntletLayer);
    }

    protected override void OnFinalize()
    {
        base.OnFinalize();
        RemoveLayer(_gauntletLayer);
        _dataSource = null;
        _gauntletLayer = null;
    }
}

压入你的 Screen

如果要将你的 Screen 压入 Screen 栈,你可以使用如下代码:

ScreenManager.PushScreen(ViewCreatorManager.CreateScreenView<MyExampleScreen>());