Changer l’image du sprite pendant que le jeu est en cours d’exécution
Environnement de vérification
- Windows
-
- Fenêtres 11
- Éditeur Unity
-
- 2020.3.25f1
- Packages du système d’entrée
-
- 1.2.0
Conditions préalables à cette astuce
Les paramètres suivants sont préconfigurés comme condition préalable à l’explication de ces conseils.
À propos de la modification de l’image d’un sprite
Comme vous pouvez le voir lorsque vous jouez à un jeu en 2D, vous verrez souvent une scène où l’image définie sous forme de sprite bascule au milieu. Par exemple, la porte est d’abord fermée, mais en l’ouvrant, elle s’affiche comme une porte ouverte.
Pour ce faire, vous pouvez préparer deux objets, une porte fermée et une porte ouverte, et les montrer ou les masquer. Ici, nous allons essayer d’y parvenir en inversant l’image du sprite.
Ajout et placement d’images dans un projet
Cette fois-ci, vous avez besoin d’une image avant le changement et d’une image après le changement, alors préparez-en deux.
Ici, le nom du UnityTips
UnityTipsChange
fichier est , respectivement.
Déposez le sprite du projet et placez-le. Lorsque vous cliquez sur le bouton, l’image change, alors placez le bouton à partir de l’interface utilisateur.
Création d’un script de changement d’image
Créez un script. Le nom est arbitraire, mais dans ce cas SpriteChange
, c’est .
Cette fois, cliquez sur le bouton pour que l’image du sprite change au moment où elle se produit. De plus, le sprite à modifier sera défini à l’avance. Si vous le modifiez, vous pouvez créer et configurer des sprites dynamiquement. La façon de le changer est fondamentalement la même.
Le script ressemble à ceci :
using UnityEngine;
public class SpriteChange : MonoBehaviour
{
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
<summary>ボタンをクリックしたときに呼ばれます。</summary>
public void OnClick()
{
if (TargetSprite == null)
{
Debug.Log($"{nameof(TargetSprite)} が null です。");
return;
}
if (NextSprite == null)
{
Debug.Log($"{nameof(NextSprite)} が null です。");
return;
}
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
if (spriteRenderer == null)
{
Debug.Log($"{nameof(TargetSprite)} に {nameof(SpriteRenderer)} コンポーネントがありません。");
return;
}
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
}
}
Dans le champ, préparez le sprite, l’objet à modifier et le sprite qui sera l’image après le changement.
GameObject
Vous pouvez voir que vous pouvez définir l’objet cible à partir de la hiérarchie.
Sprite
Il peut s’agir de savoir ce qu’il faut mettre dans .
Pour cela, je pense que le « type de texture » du fichier image ajouté au projet est « Sprite (2D et UI) » par défaut, il peut donc être automatiquement traité comme un sprite. Vous pouvez donc le traiter comme un sprite simplement en définissant le fichier image.
<summary>画像を変更するスプライトオブジェクト。</summary>
[SerializeField] private GameObject TargetSprite;
<summary>変更後の画像を持つスプライト。</summary>
[SerializeField] private Sprite NextSprite;
OnClick
La méthode est censée être appelée lorsque l’on clique sur le bouton. Le nom de la méthode est arbitraire.
OnClick
Dans la méthode, nous changeons l’image.
Puisque est celui qui contient SpriteRenderer
les informations d’image, nous obtenons le composant à partir du SpriteRenderer
GameObject.
SpriteRenderer
La classe a une propriété où vous pouvez permuter l’image en la définissant sur un sprite qui a une sprite
nouvelle image.
// 変更対象のオブジェクトが持つ SpriteRenderer を取得
var spriteRenderer = TargetSprite.GetComponent<SpriteRenderer>();
// 省略
// SpriteRenderer の sprite に変更後のスプライトをセット
spriteRenderer.sprite = NextSprite;
Après avoir enregistré le script, attachez-le à l’objet. L’objet à attacher est facultatif, mais dans ce cas EventSystem
, il est attaché à .
Puisqu’il y a « Target Sprite » et « Next Sprite » en tant que paramètres, « Target Sprite » a des objets sprite de la hiérarchie,
« Next Sprite » est défini sur le fichier image modifié du projet.
Spécifiez la méthode à partir du OnClick
script attaché à l’événement EventSystem
de clic du bouton .
Lancez le jeu et essayez d’appuyer sur le bouton. Si l’image change, c’est un succès.