Cuatro trucos rápidos para el desarrollo de Unity3D

Más flexibilidad, menos código, desarrollo más productivo.









Unity3D — , 8  — , , -. , Unity -, , .





, , , - — , . - 24 72 ,  — , GitHub Game Off, .





-, C++ ( , ), , :  — .





 — (, , ) — :





  1. : , .





  2. : , .





Unity : Unity, .





, Unity3D .





: Unity 3D Technologies ( ).





1.

 — . Unity .





 — [Serializable] .  — Unity:





[Serializable]
public struct PlayerStats
{
   public int movementSpeed;
   public int hitPoints;
   public bool hasHealthPotion;
}
      
      



, , .





Lista de estadísticas de jugadores en el inspector de propiedades de Unity
Unity

: , ,  — , .





( )  — , . :





Lista de estadísticas de jugador con sprites y enumeraciones en el inspector de Unity
Unity
public enum PlayerType
{
    ARCHER, KNIGHT
}

[Serializable]
public struct PlayerStats
{
    public int movementSpeed;
    public int hitPoints;
    public bool hasHealthPotion;
    public Sprite face;
    public PlayerType type;
}
      
      



, Unity  — .





2. RequireComponent

 — . , , , Rigidbody .  — RequireComponent.





:





  1. .





  2. .





  3. , .





RequireComponent :





[RequireComponent(typeof(Rigidbody))]
public class PlayerScript : MonoBehaviour
{
    Rigidbody rigidbody;

    void Awake()
    {
        rigidbody = GetComponent<Rigidbody>();
    }
}
      
      



. Awake Start, .





. , RequireComponent . ,  — .





, , null, — , .





3.

, , : Unity . Unity , , , , .





,  — .





OnClick: , , .





, , onClick Unity, . :  — ( setActive(true) ),  — ( play() ) Animator — ( setTrigger() ).  — .





Ejemplo de una lista con eventos OnClick
OnClick

. . . , . :  — , .





4. Unity

Unity UnityEvent, OnClick Unity. UnityEvent, , , OnClick:





Una variable UnityEvent denominada EventsToBeCalled
UnityEvent EventsToBeCalled

, , UnityEvent . , UnityEvent Invoke:





using UnityEngine;
using UnityEngine.Events;
public class CallEventsScript : MonoBehaviour
{
   public UnityEvent eventsToBeCalled;
   public void CallEvents()
   {
      eventsToBeCalled.Invoke();
   }
}
      
      



CallEvents UnityEvent. , , .  — .





Línea de tiempo de animación con evento agregado que llama al método CallEvents
, CallEvents

UnityEvent , , , Awake, Start, OnEnable, OnDisable  . . , , Start, — .





 — , : , . UnityEvent:





[RequireComponent(typeof(Collider))]
public class TriggerBoxScript : MonoBehaviour
{
    public UnityEvent eventsToBeCalledOnCollision;
    public List<string> objectsTagToActivate;

    private void OnCollisionEnter(Collision other)
    {
        if (OtherHasWantedTag(other.gameObject))
        {
            InvokeEvents();
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (OtherHasWantedTag(other.gameObject))
        {
            InvokeEvents();
        }
    }

    private bool OtherHasWantedTag(GameObject other)
    {
        var found = objectsTagToActivate.Find(other.CompareTag);
        return found != null;
    }

    private void InvokeEvents()
    { 
        eventsToBeCalledOnCollision.Invoke();   
    }
}
      
      



, ( OnTriggerEnter, OnCollisionEnter). , .





Ejemplo de componentes necesarios para una caja de activación

, . , «Player»  — , . : , , ,  . .





,  — Unity.  — .





(OnClick UnityEvent) ( ) ( ).





, , : . , , , . Unity, .





,  — , , . , , .





 .





Costa, arena marrón.  Albert Edelfelt (1935) [USEUM]
, . (1935) [USEUM]

Alconost.





Alconost , 70 . - , , API, , 24/7, .





— , , , , , , , Google Play App Store.








All Articles