/
GeekNerd
/
ServerModelingProject
Обзор
Документация
Войти
/
GeekNerd
/
ServerModelingProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Assets/Plugins/Zenject/Source/Runtime/Kernels/MonoKernel.cs
130 строк
3 KB
Gorney-Alex
Init
30 май 2026, 19:05
30 май 2026, 19:05
3cdcc49
Код
Авторство
О чём код?
#if !NOT_UNITY3D #pragma warning disable 649 using ModestTree; using UnityEngine; using UnityEngine.Analytics; namespace Zenject { public abstract class MonoKernel : MonoBehaviour { [InjectLocal] TickableManager _tickableManager = null; [InjectLocal] InitializableManager _initializableManager = null; [InjectLocal] DisposableManager _disposablesManager = null; [InjectOptional] private IDecoratableMonoKernel decoratableMonoKernel; bool _hasInitialized; bool _isDestroyed; protected bool IsDestroyed { get { return _isDestroyed; } } public virtual void Start() { if (decoratableMonoKernel?.ShouldInitializeOnStart()??true) { Initialize(); } } public void Initialize() { // We don't put this in start in case Start is overridden if (!_hasInitialized) { _hasInitialized = true; if (decoratableMonoKernel != null) { decoratableMonoKernel.Initialize(); } else { _initializableManager.Initialize(); } } } public virtual void Update() { // Don't spam the log every frame if initialization fails and leaves it as null if (_tickableManager != null) { if (decoratableMonoKernel != null) { decoratableMonoKernel.Update(); } else { _tickableManager.Update(); } } } public virtual void FixedUpdate() { // Don't spam the log every frame if initialization fails and leaves it as null if (_tickableManager != null) { if (decoratableMonoKernel != null) { decoratableMonoKernel.FixedUpdate(); } else { _tickableManager.FixedUpdate(); } } } public virtual void LateUpdate() { // Don't spam the log every frame if initialization fails and leaves it as null if (_tickableManager != null) { if (decoratableMonoKernel != null) { decoratableMonoKernel.LateUpdate(); } else { _tickableManager.LateUpdate(); } } } public virtual void OnDestroy() { // _disposablesManager can be null if we get destroyed before the Start event if (_disposablesManager != null) { Assert.That(!_isDestroyed); _isDestroyed = true; if (decoratableMonoKernel != null) { decoratableMonoKernel.Dispose(); decoratableMonoKernel.LateDispose(); } else { _disposablesManager.Dispose(); _disposablesManager.LateDispose(); } } } } } #endif