怪物的AI脚本(1)
1. VS底下的绿色波浪线是什么意思?
绿色波浪线:
如果你的代码中出现了绿色的波浪线,说明你的代码语法并没有错误,
只不过提示你有可能会出现错误,但是不一定会出现错误。警告线
红色波浪线:
如果你的代码中出现了红色的波浪线,意味着你的代码中出现了
语法错误。
2. 复习一下枚举和字典类
https://www.cnblogs.com/lina-chu/p/8391325.html 作者:雪溪
https://www.cnblogs.com/xiongze520/p/10271350.html 作者:熊泽-学习中的苦与乐
默认情况下,第一个枚举的值为0,之后每个连续枚举数的值加1;若设置某一枚举数的值,之后的枚举数仍然按1递增。
enum Day
{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
};enum Number
{One = 1,Two,Three,Eleven = 11,Twelve,Thirteen
};
枚举中的每个元素的基础类型都是int,可以使用冒号指明另一种整数类型。已经批准的枚举类型有:byte,sbyte,short,ushort,int,uint,long,ulong
enum Month : byte{January,February,March,April,May,June,July,August,September,October,November,December};
也可以使用计算值: Hibernating = Sleeping + 5;
**
枚举的定义声明和转换:
**
Day today = Day.Wednesday;
Console.WriteLine($"today is {today}");int dayNumber = (int)today;
Console.WriteLine($"{today} is day number {dayNumber}");Month month = Month.January;
byte monthNumber = (byte)month;
Console.WriteLine($"{month} is month number {monthNumber}");
枚举的一些方法:
方法 | 名称 |
---|---|
CompareTo | 将此实例与指定对象进行比较并返回一个对二者的相对值的之事 |
Equals | 指示此实例是否等于指定的对象 |
Format | 根据指定格式将指定枚举类型的指定值转换为其等效的字符串表示形式 |
GetName | 在指定枚举中检索具有指定值的常数的名称 |
GetNames | 检索指定枚举中常数名称的数组 |
GetTypeCode | 返回此实例的基础 TypeCode |
GetUnderlyingType | 返回指定枚举的基础类型 |
GetValues | 索指定枚举中常数值的数组 |
HasFlag | 确定当前实例中是否设置了一个或多个位域 |
IsDefined | 返回指定枚举中是否存在具有指定值的常数的指示 |
Parse | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否不区分大小写 |
TryParse | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于指示转换是否成功的返回值 |
标志枚举
标志枚举要在顶部加上[System.Flags]特性进行声明。而且枚举支持组合运算。
这种位运算是非常有用的,再sql语句里面也支持位运算。也就是说,把一个枚举运算后的结果存入数据库之后,还能够按照你的要求读取出来,比如:
将一个“高帅”的值存入数据库,那么存进去的值就是整型5:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace enumApplication
{class Program{static void Main(string[] args){var man = People.高 | People.帅; //赋值为101 计算方法001或上100,结果是101Console.WriteLine("高和帅的枚举值和为:"+(int)man);if ((man & People.高) == People.高) //101 man { //001 高 逐位相与,Console.WriteLine("此人:高"); //001 如果结果是高,就可以反推出man包含 高}else{Console.WriteLine("此人:矮");}Console.ReadKey();}[System.Flags]public enum People:int {高 = 1, //001富 = 2, //010帅 = 4, //100}}
}
(这个位运算不是很懂…)
字典类:
https://www.cnblogs.com/ChenMM/p/9479987.html 作者:一颗豆豆
Dictionary 提供快速的基于键值(Key)的元素查找;和哈希表很像也是一种无序的结构。
结构是:Dictionary<[key], [value]>, 当你有很多元素的时候可以用它;
要使用Dictionary,需要先导入C#泛型命名空间System.Collections.Generic,在使用前,你必须声明它的键类型和值类型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Demo1
{class Program{static void Main(string[] args){//创建泛型哈希表,Key类型为int,Value类型为stringDictionary<int, string> myDictionary = new Dictionary<int, string>();//1.添加元素myDictionary.Add(1, "a");myDictionary.Add(2, "b");myDictionary.Add(3, "c");//2.删除元素myDictionary.Remove(3);//3.假如不存在元素则添加元素if (!myDictionary.ContainsKey(4)){myDictionary.Add(4, "d");}//4.显示容量和元素个数Console.WriteLine("元素个数:{0}",myDictionary.Count);//5.通过key查找元素if (myDictionary.ContainsKey(1)){Console.WriteLine("key:{0},value:{1}","1", myDictionary[1]);Console.WriteLine(myDictionary[1]); }//6.通过KeyValuePair遍历元素foreach (KeyValuePair<int,string>kvp in myDictionary){Console.WriteLine("key={0},value={1}", kvp.Key, kvp.Value);}//7.得到哈希表键的集合Dictionary<int, string>.KeyCollection keyCol = myDictionary.Keys;//遍历键的集合foreach (int n in keyCol){Console.WriteLine("key={0}", n); }//8.得到哈希表值的集合Dictionary<int, string>.ValueCollection valCol = myDictionary.Values;//遍历值的集合foreach( string s in valCol){Console.WriteLine("value:{0}",s);}//9.使用TryGetValue方法获取指定键对应的值string slove = string.Empty;if (myDictionary.TryGetValue(5, out slove)){Console.WriteLine("查找结果:{0}", slove);}else{Console.WriteLine("查找失败");}//10.清空哈希表//myDictionary.Clear();Console.ReadKey();}}
}
输出结果:
https://blog.csdn.net/BillCYJ/article/details/81015598 作者:Real_JumpChen
如果要修改已有key对应的value,可以这样做:
2.Unity5.4以下的版本,最好不要用foreach来遍历字典:
法一:foreach遍历字典,会生成GC:
法二:对于我这种需求,使用for循环,会生成更多的GC,因为存在mActMergeRedPointKey这个局部List变量
法三:使用迭代器,不会生成GC:
3.根据key取value,最好使用 TryGetValue 而不是 ContainsKey+根据key索引value:
法一:ContainsKey+根据key索引value,不好,用了两次查找,第一次:ContainsKey,第二次:myDictionary[key]
if(myDictionary.ContainsKey(key))
{// 通过key索引valueint resValue = myDictionary[key];
}
法二:TryGetValue的方法:
int resValue ;
myDictionary.TryGetValue(key, out resValue);
使用TryGetValue 更快,性能更好,因为只用了一次查找,TryGetValue比ContainsKey后使用[key]取value,速度快一倍;
TryGetValue更安全,找不到value时返回false,而使用ContainsKey后使用【key】取value取不到时,会抛出异常导致真机卡死。
e.g.
private Dictionary<uint, MyPet> myPets;
public List<MyPet> GetShowPets()
{List<MyPet> pets = new List<MyPet>();if (null != myPets){var e = myPets.GetEnumerator();while (e.MoveNext()){if (CheckPetShow(e.Current.Key)){pets.Add(e.Current.Value);}}}//根据配置表权重进行升序排序pets.Sort(delegate (MyPet pet1, MyPet pet2) {return pet1.PetRankWeight.CompareTo(pet2.PetRankWeight);});return pets;
}
https://blog.csdn.net/yinghuolsx/article/details/72952857 下次再来学习
https://blog.csdn.net/u013477973/article/details/65635737
https://dsqiu.iteye.com/blog/2029701
怪物的AI脚本(1)相关推荐
- ai二维码插件_送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用...
送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用. (领取方式见文章末尾) [AI脚本插件合集包] 此AI插件包目前有66款ai脚本插件,已经整合成插件面板的形式,方便在AI中调用. ...
- ai二维码插件_超实用的AI脚本插件合集2.0免费分享,让你的设计快人一步
AI脚本插件合集2.0版,除了更新部分插件以及增加几款新插件外,还支持AI CC 2019了.此AI插件包目前有62款ai脚本插件,已经整合成插件面板的形式,方便在AI中调用 AI脚本插件合集说明 A ...
- Python环境下用中文做了个《王者荣耀》AI脚本,附视频
<王者荣耀>AI最早的巅峰应该是在2018年 "AI(人工智能)"VS"人类明星战队",视频给你们留着了,先留着等会看. 梦泪被AI击杀6次,KPL ...
- 【cocos2d-x 手游研发----怪物智能AI】
原创文章,转载请注明出处:http://www.cnblogs.com/zisou/p/cocos2d-xARPG4.html 谈到怪物AI,我觉得就比较话多了,首先理解一下(Artificial I ...
- 【LOSOL】怪物及AI设计
LOSOL怪物及AI设计 引子 怪物设计理念 怪物类型列举 怪物AI简述 怪物AI包括范围 怪物AI设计 结语 引子 怪物在游戏中始终占据着一个极其重要的位置,一个游戏的趣味性很大一部分跟怪物的设计挂 ...
- MFC学习笔记之三(粒子系统+怪物简单AI+碰撞检测)
到上海找到住的地方之后,干的第一件事,就是抓紧时间学习,为了找到工作努力ing... 备注:以下请参考http://blog.csdn.net/hust_xy/article/details/9374 ...
- 魔域mysql怎么连接数据库_怪物入包脚本:Navicat for MySQL使用Navi
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 怪物入包脚本: Navicat for MySQL使用Navicat for MySQL连接数据库在 my 数据库中 找到 cq_action ,cq_m ...
- Python环境下用中文做了个《王者荣耀》AI脚本
<王者荣耀>AI最早的巅峰应该是在2018年 "AI(人工智能)"VS"人类明星战队" 以此为目标在python环境下开发了AI脚本自动打<王 ...
- Cocos2d-x怪物智能AI怪物也有智商--之游戏开发《赵云要格斗》(6) cocos2dx 3.3移植版
源码:git@github.com:baidang201/ARPG_Zhaoyun.git 本文将主要来讲讲游戏开发中的怪物智能,一个好的游戏一般怪物都要分等级,这样我们游戏玩起来才有意思,怪物如果智 ...
最新文章
- 【设计模式1】宏观总结
- php redis删除所有key,PHP 对 Redis key 值的操作
- python-格化输出format方法
- cf(聚簇因子)调优,计划调优,SQL改造
- mysql创建外键失败_mysql创建外键错误
- 宏定义不是c语言语句 行末不必加分号,模拟C语言试题-02(2).doc
- 如何将pdf转换成word的3种免费方法
- The word ‘localhost‘ is not correctly spelled 这个问题怎么解决
- 项目需求的重要性和开发步骤
- ts16949 软件开发流程图_TS16949体系过程流程图(1)
- 用matlab做出漂亮sci论文插图,我的6分SCI插图,就是用这9个软件画出来的!
- 张丽俊最新演讲:要像竹子一样扎根,你终会一飞冲天
- 记录一次Spark小问题的求证过程
- IplImage 的使用
- Python·代码高亮插件YAPF
- 苹果备忘录误删了怎么恢复?3个方法快速复原
- MultipeerConnectivity.framework梳理
- 【ubuntu】本地访问ubuntu服务器的jupyter文件,.ipynb误删除找回、恢复
- Rundll.exe 命令详解
- 从零学Python数据分析 50 本宝书