Olá!! Eu fiz os códigos do seguinte jeito:
GameManager
using UnityEngine;
public class GameManager
{
private GameManager()
{
inputManager = new InputManager();
}
private static GameManager instance = null;
public InputManager inputManager;
public static GameManager Instance
{
get
{
if (instance == null)
{
instance = new GameManager();
}
return instance;
}
}
}
PlayerBehavior
using UnityEngine;
public class PlayerBehavior : MonoBehaviour
{
[SerializeField] private float moveSpeed = 10f;
void Update()
{
float moveDirection = GameManager.Instance.inputManager.Movement * Time.deltaTime * moveSpeed;
transform.Translate(moveDirection, 0, 0);
}
}
No final, o jogo está funcionando do msm jeito, porém, gostaria de saber se tem alguma diferença significativa desse código e do feito em aula.
Eu acredito que no meu código possa ter um problema relacionado a inicialização do GameManager, pois ele está sendo inicializado primeiramente dentro do Update do Player Behavior, e isso seria ruim pois ele dependeria do player estar na cena para ser inicializado, e consequentemente não funcionaria em menus e etc... estou certo?