Récapitulatif : pool de projectiles
Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 40 sur 50.
Défi
MoyenEntraînement au tir. Les flèches font glisser le Tank vers la gauche et vers la droite (prêt), et les deux cibles rouges ont un script Target avec Hit() (prêt). Faites tirer au tank des balles mises en pool :
- Dans
Tank.cs, conservez unObjectPool<Bullet>qui crée les balles à partir debulletPrefab, les active lorsqu’elles sont retirées du pool et les désactive lorsqu’elles y retournent, détruit celles qu’il élimine et conserve au maximum 4 balles en réserve. - La barre d’espace prend une balle dans le pool et la lance à 1 unité devant le tank.
- Dans
Bullet.cs, une balle vole vers l’avant (+z) à la vitessespeed(15). Lorsqu’elle touche un objet doté d’un script Target (le collider de la balle est un trigger), elle appelleHit()sur la cible et retourne immédiatement dans le pool. Une balle qui ne touche rien retourne dans le pool aprèslife(1) seconde. - Chaque tir donne à la balle toute sa durée de vie, même lorsqu’elle est réutilisée, et une balle retourne dans le pool une seule fois par tir.
Appuyez sur Play, tirez sur les deux cibles, puis appuyez sur Check.
Essayez vous-même
using UnityEngine;
using UnityEngine.Pool;
public class Bullet : MonoBehaviour
{
public float speed = 15f;
public float life = 1f;
// Avancer tout droit ; retourner dans le pool en touchant un Target ou après life secondes
}
Toutes les leçons de Architecture de jeu dans Unity
1Des composants, pas des hiérarchies
Des composants simplesUn script de base pour les ennemisDes composants abstraitsDes composants qui fonctionnent ensembleRécapitulatif : tourelle modulaire4Données sérialisées
Classes sérialisablesListes dans l’inspecteurÉnumérations dans l’inspecteurRécapitulatif : table de butin7Machines à états
Les états sous forme de classesUne machine à étatsTransitionsLes cerveaux des ennemisRécapitulatif : états d’une porte10Projet : Survivant de l’arène
Le hérosTypes d’ennemis2Interfaces dans Unity
IDamageableInterfaces et TryGetComponentGetComponentsRécapitulatif : touche d’interaction5ScriptableObjects
Assets de donnéesStatistiques des armesParamètres partagésLes vagues sous forme de donnéesRécapitulatif : base de données d’objets3Événements
Événements C# dans UnityS’abonner dans OnEnableChamps UnityEventLes événements pilotent l’interface utilisateurRécapitulatif : fenêtre contextuelle de succès6Sauvegarder avec JSON
JsonUtilitySauvegarder le jeuCharger et valeurs par défautRécapitulatif : emplacements de sauvegarde9Réutilisation des objets
Pourquoi mettre les objets en poolUn pool avec une fileObjectPool de UnityRécapitulatif : pool de projectiles