Je fais du pooling pour mes gameobjects sur mes projets. Quand j'ai un go qui ne me sert plus, au lieu de le détruire, je le recycle au cas où j'aurais besoin d'en recréer un nouveau plus tard.
la question est, est-ce utile d'en faire de même pour des classes non monobehaviour ?
Je stock plein de données dans des classes écrites pour. Je créé un tas de ces classes (que je stock par exemple dans des lists et arrays) et dans chacune, j'y stock ce que j'ai à y stocker.
Maintenant, il se peut que à un moment donné, je n'en ai plus besoin. Est-ce utile de les recycler (pour une possible futur utilisation) comme je le fais pour mes go ?
Exemple bidon:
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class A{
public string a;
public string b;
public string c;
}
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Main : MonoBehaviour{
public List<A> a = new List<A>();
void Start(){
for(int i = 0; i < 100; i++){
A aa = new A();
aa.a = "bla " + i;
aa.b = "blabla " + i;
aa.c = "blablabla " + i;
a.Add(aa);
}
}
}
Devrais-je tout simplement faire
Code : Tout sélectionner
a.RemoveAt(2);
A aa = new A();
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public static class Recyclage{
private static List<A> aStock = new List<A>();
public static void Recycle(A a){
a.a = null;
a.b = null;
a.c = null;
aStock.Add(a);
}
public static A New(){
if(aStock.Count > 0){
A a = aStock[0];
aStock.Remove(Stock[0]);
return a;
}
else{
return new A();
}
}
}
Code : Tout sélectionner
Recyclage.Recycle(a[2]);
a.RemoveAt(2);
A newA = Recyclage.New();
J'ai beau utiliser unity depuis un bout maintenant, ces spécificités techniques, ce n'est pas trop mon fort.
Merci
yoyo