コード例 #1
0
    public void AddNewUpdatee(MonoBehaviour component, Action updateAction)
    {
        var updateOffset = (float)(_random.NextDouble() * _timeBetweenUpdates);
        var key          = new UpdateOffsetWithAction()
        {
            Action       = updateAction,
            UpdateOffset = updateOffset
        };

        Assert.IsFalse(_actionToKey.ContainsKey(updateAction));
        _actionToKey[updateAction] = key;

        var updatee = new UpdateeWithMethod()
        {
            Component    = component,
            UpdateOffset = updateOffset,
            UpdateAction = updateAction,
        };

        _updatees.Add(key, updatee);

        if (_updatees.Count == 1)
        {
            _currentIndex = 0;
        }
        else
        {
            var indexOfNewUpdatee = _updatees.IndexOfKey(key);
            if (indexOfNewUpdatee <= _currentIndex)
            {
                _currentIndex++;
            }
        }
    }
コード例 #2
0
    private void ExecuteLoop(UpdateeWithMethod element, ref List <Action> actionsToDelete)
    {
        try
        {
            element.UpdateAction();
        }
        catch (Exception ex)
        {
            if (element.Component == null)
            {
                if (actionsToDelete == null)
                {
                    actionsToDelete = new List <Action>();
                }

                actionsToDelete.Add(element.UpdateAction);
            }
            else
            {
                UnityEngine.Debug.LogError(ex.ToString());
            }
        }
    }