FairyGUI.TypingEffect.Start C# (CSharp) Method

Start() public method

开始打字效果。可以重复调用重复启动。
public Start ( ) : void
return void
        public void Start()
        {
            _textField.graphics.meshModifier -= OnMeshModified;
            _textField.Redraw();
            _textField.graphics.meshModifier += OnMeshModified;

            _backupVerts.Clear();
            _stroke = false;
            _shadow = false;
            _mainLayerStart = 0;
            _mainLayerVertCount = 0;
            _printIndex = 0;
            _vertIndex = 0;
            _started = true;

            int vertCount = _textField.graphics.vertCount;

            //备份所有顶点后将顶点置0
            Vector3[] vertices = _textField.graphics.vertices;
            Vector3 zero = Vector3.zero;
            for (int i = 0; i < vertCount; i++)
            {
                _backupVerts.Add(vertices[i]);
                vertices[i] = zero;
            }
            _textField.graphics.mesh.vertices = vertices;

            //隐藏所有混排的对象
            if (_textField.richTextField != null)
            {
                int ec = _textField.richTextField.htmlElementCount;
                for (int i = 0; i < ec; i++)
                    _textField.richTextField.ShowHtmlObject(i, false);
            }

            int charCount = _textField.charPositions.Count;
            for (int i = 0; i < charCount; i++)
            {
                TextField.CharPosition cp = _textField.charPositions[i];
                if (cp.vertCount > 0)
                    _mainLayerVertCount += cp.vertCount;
            }

            if (_mainLayerVertCount < vertCount) //说明有描边或者阴影
            {
                if (vertCount == _mainLayerVertCount * 6)
                {
                    _stroke = true;
                    _shadow = true;
                    _mainLayerStart = vertCount * 5 / 6;
                    _strokeLayerStart = vertCount / 6;
                }
                else if (vertCount == _mainLayerVertCount * 5)
                {
                    _stroke = true;
                    _shadow = false;
                    _mainLayerStart = vertCount * 4 / 5;
                    _strokeLayerStart = 0;
                }
                else if (vertCount == _mainLayerVertCount * 2)
                {
                    _stroke = false;
                    _shadow = true;
                    _mainLayerStart = vertCount / 2;
                }
            }
        }

Usage Example

    void Start()
    {
        _mainView = this.GetComponent<UIPanel>().ui;

        _te1 = new TypingEffect(_mainView.GetChild("n5").asTextField);
        _te1.Start();
        Timers.inst.StartCoroutine(_te1.Print(0.050f));

        _te2 = new TypingEffect(_mainView.GetChild("n12").asTextField);
        _te2.Start();
    }