Ejemplo n.º 1
0
        /// <summary>
        /// AntDataをもとに、対応するAntFactoryを用いてAntのインスタンスを生成する。
        /// </summary>
        /// <param name="antData">生成に使用するAntData。</param>
        /// <param name="registerToGameContext">新たにGameContextに登録するかどうか。セーブデータからの生成などの際に限りfalseを指定する。</param>
        /// <returns>生成されたGameObjectのもつAntコンポーネント。</returns>
        public Ant InstantiateAnt(AntData antData, bool registerToGameContext = true)
        {
            Debug.Log(antData.GetType());
            var ant = antFactories.FirstOrDefault(f => f.DataType == antData.GetType())?.InstantiateAnt(antData);

            if (ant != null)
            {
                if (registerToGameContext)
                {
                    Data.Ants.Add(antData);
                }

                SpawnedAnts.Add(ant);
            }

            return(ant);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// AntDataをもとに、対応するAntFactoryを用いてAntのインスタンスを生成する。
        /// </summary>
        /// <param name="antData">生成に使用するAntData。</param>
        /// <param name="registerToGameContext">新たにGameContextに登録するかどうか。セーブデータからの生成などの際に限りfalseを指定する。</param>
        /// <returns>生成されたGameObjectのもつAntコンポーネント。</returns>
        public Ant InstantiateAnt(AntData antData, bool registerToGameContext = true)
        {
            AntFactory matchedFactory = null;

            foreach (var f in antFactories)
            {
                if (f.DataType == antData.GetType())
                {
                    matchedFactory = f;
                    break;
                }
                else if (matchedFactory == null && antData.GetType().IsSubclassOf(f.DataType))
                {
                    matchedFactory = f;
                }
            }

            if (!matchedFactory)
            {
                Debug.LogWarning($"NestSystem: {antData.GetType()} 用のAntFactoryは登録されていません。");
            }

            var ant = matchedFactory?.InstantiateAnt(antData);

            if (ant != null)
            {
                if (registerToGameContext)
                {
                    Data.Ants.Add(antData);
                }

                spawnedAnts.Add(ant);
            }

            return(ant);
        }