zoukankan      html  css  js  c++  java
  • AI系统(一)

    AIManager 管理所有阵营的AI

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public enum Camp{
        Player,
        Enemy,
        NPC,
        Build
    }
    
    public class AIManager : MonoBehaviour
    {
        private static AIManager instance;
        public static AIManager Instance
        {
            get
            {
                if (instance == null)
                {
                    GameObject gameObject = new GameObject();
                    gameObject.name = "AIManager";
                    DontDestroyOnLoad(gameObject);
                    instance = gameObject.AddComponent<AIManager>();
                }
                return instance;
            }
        }
    
    
        //全部AI
        public Dictionary<Camp, List<GameObject>> enemy = new Dictionary<Camp, List<GameObject>>();
    
        /// <summary>
        /// 注册怪物
        /// </summary>
        /// <param name="camp"></param>
        /// <param name="gameObject"></param>
        public void Register(Camp camp,GameObject gameObject)
        {
            if (!enemy.ContainsKey(camp))
            {
                enemy.Add(camp,new List<GameObject>());
            }
            if (enemy[camp] == null)
            {
                enemy[camp] = new List<GameObject>();
            }
            enemy[camp].Add(gameObject);
    
        }
        /// <summary>
        /// 销毁怪物时反注册
        /// </summary>
        /// <param name="camp"></param>
        /// <param name="gameObject"></param>
        public void UnRegister(Camp camp,GameObject gameObject)
        {
            if (!enemy.ContainsKey(camp))
            {
                return;
            }
            if (enemy[camp] == null)
            {
                return;
            }
            enemy[camp].Remove(gameObject);
        }
        /// <summary>
        /// 获取目标阵营的敌人
        /// </summary>
        /// <param name="camp"></param>
        /// <returns></returns>
        public List<GameObject> GetTargetCamp(Camp camp)
        {
            if (!enemy.ContainsKey(camp))
            {
                return null;
            }
            return enemy[camp];
        }
    }
  • 相关阅读:
    Windows控制程序网站带宽及Qos(TOS或DSCP)
    VBA读取、增加自定义和修改文档属性
    使用Bazel构建C/C++项目
    GoogleTest入门
    八卦一下Starlark语言
    混合编译.c/.cpp与.cu文件
    Mac Mojave(10.14.1)执行Matlab的mex报错
    安装和配置bazel
    从44.556677想到的
    Oracle中如何实现Mysql的两表关联update操作
  • 原文地址:https://www.cnblogs.com/DazeJiang/p/14386917.html
Copyright © 2011-2022 走看看