Пример #1
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        EnemyStatsSO enemyStats = (EnemyStatsSO)target;

        if (GUILayout.Button("Increase random stat"))
        {
            enemyStats.IncreaseRandomStat();
        }
    }
Пример #2
0
    /// <summary>
    /// Awake is called when the script instance is being loaded.
    /// </summary>
    void Awake()
    {
        if (Instance != this && Instance != null)
        {
            Destroy(gameObject);
        }
        else
        {
            Instance = this;
        }

        poolDictionary = new Dictionary <string, Queue <GameObject> >();
        enemyStats     = Resources.Load <EnemyStatsSO>("ScriptableObjects/EnemyStats");

        foreach (Pool pool in pools)
        {
            Queue <GameObject> objectPool = new Queue <GameObject>();

            for (int i = 0; i < pool.size; i++)
            {
                GameObject obj = Instantiate(pool.prefab);

                Enemy enemy = obj.GetComponent <Enemy>();
                if (enemy != null)
                {
                    foreach (EntityData data in enemyStats.data)
                    {
                        if (data.Name == enemy.GetType().Name)
                        {
                            enemy.data = data;
                            break;
                        }
                    }
                }

                if (pool.parent != null)
                {
                    obj.transform.SetParent(pool.parent);
                }
                obj.SetActive(false);
                objectPool.Enqueue(obj);
            }
            poolDictionary.Add(pool.tag, objectPool);
        }
    }
Пример #3
0
 private void Start()
 {
     playerManager = FindObjectOfType <PlayerManager>();
     enemyStatsSO  = FindObjectOfType <Enemy>().enemyStatSO;
     rhythmTracker = GetComponent <RhythmTracker>();
 }