Maximum Değer Hakkında Yardım

      Maximum Değer Hakkında Yardım

      Merhabalar.

      Spawn sistemim üzerinde çalışıyorum. Spawn sistemi ile objeyi spawnlıyorum, daha sonra destroy ediyorum. Ancak spawnlamaya maximum bir değer ekleyemedim. Yani sonsuza kadar spawnlıyor. Benim amacım maximum 10 tane spawnlasın, daha sonra 1 adet destroy edilince anında 1 adet spawnlasın.

      - if(obje.Length <10) böyle yapınca olmuyor. Çünkü obje.Length değeri benim objelerin içine sürüklediğim prefab sayısını alıyor, oyundaki clone sayısını almıyor.


      Şu şekilde spawn yapıyorum ve C# içinde kodluyorum. Yardımlarınızı bekliyorum ;( ;(

      public GameObject[] obje;

      var newObje = Instantiate(obje[randomObje]);
      newObje.transform.position = randomPos;

      Source Code

      1. public GameObject spawnnoktasi;
      2. public GameObject dusman;
      3. int maxSpawn = 10;
      4. int mevcutSpawn =0;
      5. int dusmanCani =100;
      6. bool yaratiliyor = false;
      7. void update(){
      8. if(!yaratılıyor){
      9. yaratiliyor = true;
      10. StartCoroutine(dusmanyarat());
      11. }
      12. if(dusmanCani<=0){
      13. ​ mevcutSpawn--;
      14. }
      15. }
      16. IEnumerator dusmanyarat() {
      17. if(mevcutSpawn < maxSpawn) {
      18. yield return new WaitForSeconds(1);
      19. Instantiate(dusman, spawn1noktasi.transform.position, Quaternion.identity(0,90,0)); //örnek spawn
      20. mevcutSpawn ++;
      21. }
      22. yaratiliyor = false;
      23. }


      şöyle bir örnek yazdım umarım anlaşılır olmuştur.

      TheDemenio wrote:

      Source Code

      1. public GameObject spawnnoktasi;
      2. public GameObject dusman;
      3. int maxSpawn = 10;
      4. int mevcutSpawn =0;
      5. int dusmanCani =100;
      6. bool yaratiliyor = false;
      7. void update(){
      8. if(!yaratılıyor){
      9. yaratiliyor = true;
      10. StartCoroutine(dusmanyarat());
      11. }
      12. if(dusmanCani<=0){
      13. ​ mevcutSpawn--;
      14. }
      15. }
      16. IEnumerator dusmanyarat() {
      17. if(mevcutSpawn < maxSpawn) {
      18. yield return new WaitForSeconds(1);
      19. Instantiate(dusman, spawn1noktasi.transform.position, Quaternion.identity(0,90,0)); //örnek spawn
      20. mevcutSpawn ++;
      21. }
      22. yaratiliyor = false;
      23. }


      şöyle bir örnek yazdım umarım anlaşılır olmuştur.


      Hocam gayet açıklayıcı olmuş çok teşekkür ederim. Ancak ben destroy bölümünü sizin örneğinize göre canavar objesinin içinde yapıyorum. Yani destroy kısmı aynı scriptte değilde farklı scriptte. Bunu nasıl halledebilirim peki ? Normalde şu şekilde başka scripte ulaşılabiliyordu scriptadı.isim ancak mevcutSpawn -- nasıl yapabilirim başka scriptten acaba böyle birşey mümkün mü
      GameObject.Find("objeadı").GetComponent<scriptadı>().mevcutskill -= 1 ;

      "objeadı" kısmına bu scriptin bağlı olduğu objenin adını yazıyorsun. Tırnaklar dahil ve büyük harflere dikkat ederek. scriptadı kısmına da script dosyasının adını yazıyorsun. SCript adı da tırnaksız olacak yazdığım gibi.

      TheDemenio wrote:

      GameObject.Find("objeadı").GetComponent<scriptadı>().mevcutskill -= 1 ;

      "objeadı" kısmına bu scriptin bağlı olduğu objenin adını yazıyorsun. Tırnaklar dahil ve büyük harflere dikkat ederek. scriptadı kısmına da script dosyasının adını yazıyorsun. SCript adı da tırnaksız olacak yazdığım gibi.


      Hocam cevaplarınız için çok teşekkür ederim amacıma ulaştım.

      Ben şu şekilde farklı scriptten bağlandım.

      scriptadı.mevcutSpawn--;