Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

287
Vistas
Excepción nula de Unity al instanciar la clase

De alguna manera obtengo una excepción de referencia nula en Unity. Creé un constructor para mi clase de arma e hice otra clase de arma (que hereda de monobehaviour), donde crea las armas con sus estadísticas. en pistol.Stats(10, 0.5f, 2, 5, new Vector2(0.2f, 0.09f)); ocurre una referencia nula.

Guión 1:

 public class WeaponClass { public float damage, spread, bulletsPerSec, rotationSpeed; public string name; public Vector2 shootPoint; private Image image; public WeaponClass Stats(float Adamage, float Aspread, float AbulletsPerSec, float ArotationSpeed, Vector2 Ashootpoint) { damage = Adamage; spread = Aspread; bulletsPerSec = AbulletsPerSec; rotationSpeed = ArotationSpeed; shootPoint = Ashootpoint; return this; } }

Guión 2:

 public class Weapons : MonoBehaviour { private PlayerControlls _playerControlls; private WeaponClass pistol, m4 = new WeaponClass(); private Bullet _bullet; public WeaponClass currentWeapon; private GameObject bullet; public Rigidbody2D bulletRb; private float randomdirection; public float randomdirectionangle; void Start() { pistol.Stats(10, 0.5f, 2, 5, new Vector2(0.2f, 0.09f)); currentWeapon = pistol; Debug.Log(currentWeapon); } void Update() { } public void Shoot() { randomdirection = Random.Range(-currentWeapon.spread, currentWeapon.spread); randomdirectionangle = Mathf.Atan2(randomdirection, currentWeapon.shootPoint.x) * Mathf.Rad2Deg; Quaternion bulletrotation = new Quaternion(0, 0, randomdirectionangle, 0); GameObject bulletclone = Instantiate(bullet, currentWeapon.shootPoint, _playerControlls.GunEquipped.transform.rotation); bulletRb = bulletclone.GetComponent<Rigidbody2D>(); } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

¡Cuidado al declarar/inicializar múltiples campos en una sola línea!

Que haces

 private WeaponClass pistol, m4 = new WeaponClass();

es igual a escribir

 private WeaponClass pistol; // NOT INITIALIZED! private WeaponClass m4 = new WeaponClass();

Entonces lo que quieres sería

 private WeaponClass pistol = new WeaponClass(), m4 = new WeaponClass();

En general, me desalentaría de usar esto y preferiría hacerlo siempre en líneas separadas:

 private WeaponClass pistol = new WeaponClass(); private WeaponClass m4 = new WeaponClass();

Como esto es

  • mejor legible
  • como ves menos propenso a errores
  • mejor mantenible, puede agregar o eliminar campos fácilmente de esta manera
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda