Utiliser les Scriptables Objects avec Unity

YouTube player

Que sont les « Scriptables Objects » ?

Un ScriptableObject est un conteneur de données que vous pouvez utiliser pour enregistrer de grandes quantités de données, indépendamment des instances de classe. L’un des principaux cas d’utilisation de ScriptableObjects est de réduire l’utilisation de la mémoire de votre projet en évitant les copies de valeurs. 

Chaque fois que vous instanciez ce Prefab, il obtient sa propre copie de ces données. Au lieu d’utiliser cette méthode et de stocker des données dupliquées, vous pouvez utiliser un ScriptableObject pour stocker les données, puis y accéder par référence à partir de tous les préfabriqués.

Lorsque vous utilisez l’éditeur, vous pouvez enregistrer des données dans des ScriptableObjects lors de l’édition et au moment de l’exécution, car les ScriptableObjects utilisent l’espace de noms de l’éditeur et les scripts de l’éditeur. 

Dans une version déployée, cependant, vous ne pouvez pas utiliser ScriptableObjects pour enregistrer des données, mais vous pouvez utiliser les données enregistrées à partir des actifs ScriptableObject que vous avez configurés pendant le développement.

Les données que vous enregistrez à partir des outils de l’éditeur dans ScriptableObjects en tant qu’actif sont écrites sur le disque et sont donc persistantes entre les sessions.

Code du tutoriel

using UnityEngine;
using TMPro;

public class Player : MonoBehaviour
{
    public TMP_Text txtScore;
    public DataPlayer dataPlayer;

    void Start()
    {
        GetComponent<Renderer>().material.color = dataPlayer.Color;     
        txtScore.text = "Score " + dataPlayer.Score.ToString();
    }
    
    void Update()
    {
        float x = Input.GetAxis("Horizontal"); 

        transform.Translate(Vector3.right * x * dataPlayer.Speed * Time.deltaTime);
    }

    public void AddScore()
    {
        dataPlayer.Score++;
        txtScore.text = "Score " + dataPlayer.Score.ToString();   
    }

    public void AddSpeed()
    {
        dataPlayer.Speed = 10f; 
    }

    public void ChangeColor()
    {
        dataPlayer.Color = Color.green;
        GetComponent<Renderer>().material.color = dataPlayer.Color;

    }
}


using UnityEngine;

[CreateAssetMenu()]

public class DataPlayer : ScriptableObject
{
    public float Speed;
    public Color Color;
    public int Score; 
}

A propos de upln 276 Articles
En informatique le problème se situe souvent entre la chaise et le clavier !

Soyez le premier à commenter

Poster un Commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.