eventID特性好用
eventID特性好用
网络IO用的Select多路复用加阻塞。
AES加密协议对象时要求不能为空,所以让ProtoType在构造函数内赋值。
lsw:建议在连接失败的回调里面设置m_Diaoxian = true;//确保一直尝试重连
图片加载不出来可以用下面这种形式,就不用在方法里面传参数了;
private void OnLoadSpriteTest1(string path, object obj, object param1 = null, object param2 = null, object param3 = null)
{
if (obj != null)
{
Texture2D texture = obj as Texture2D;
Sprite sprite = Sprite.Create(texture, new Rect(0,0,texture.width,texture.height),new Vector2(1f,1f));
m_MainPanel.Test1.sprite = sprite;
Debug.Log("图片1已加载");
}
}
测试可以加载出来
1:做动画时候,若产生位置不符合,可以调整锚点来调整产生位置。
2:点击Preview来取消动画播放模式
1、攻击方法优化:目标移动追赶判定,意思是攻击过程中目标位置可能再次移动超出角色攻击范围,需要停止攻击并重启导航方法
如果攻击目标不为建筑,判断currentTarget是否为空。如果不为空,则将目标位置设置为当前目标位置。
- 如果目标位置和角色位置距离大于攻击距离,重启导航系统,meshAgent. isStopped = false,停止攻击动画。
如果目标超出跟踪范围(约为攻击范围2倍),则目标丢失,重置状态ResetState
- 如果在攻击范围内,持续攻击
老師的臉忘了碼掉!
不需要在编辑器里面,给list设置scrollBarSkin.
在代码里面this.lstCharacter.hScrollBarSkin = "";就可以了
//t:prefab or t:Prefab 表示type:Prefab----- (t:TextAsset 表示文本类型),返回GUID
string[] allStr = AssetDatabase.FindAssets("t:prefab", abConfig.m_AllPrefabPath.ToArray());
foreach (var str in allStr)
{
Debug.Log(AssetDatabase.GUIDToAssetPath(str)); //通过GUID找到资源的全路径(带后缀)
}
1:可以巧妙使用图层显示关闭-static来切换Panel页面
下节课客户端NetMsgCenter脚本Awake方法里面的clientPeer定义成全局的!!
随机生成敌人,并赋值位置
生成特效并生成位置
Ctrl+F可以方便得替换
1.ecs 为什么访问内存快?
chunk的概念:将相同的组件的实体放入同一块内存,如果 内存块不够使用 会再次开辟。
archtype的概念:一组多个相同的chunk 成为archtype
任务12:10-编写小球事件曲谱
1、默认持续生成新的敌人:在Start中调用InvokeRepeating方法
2、在Update中检查敌人数量是否达到上限:
如果isSpawning为true,且敌人数量达到上限,达到则CancelInvoke(); 并将isSpawning= false;
前面ObjectPool脚本的GetObject方法中,while循环中都掉了return,导致运行就卡死。
其中有一次运行的时候控制台提示内存溢出,就找了下脚本中有循环的部分,发现是GetObject函数写错了,漏写了return。
while (i-->0) {
T t = pool[i];
pool.RemoveAt(i);
//return t; //开始的时候这句漏写了
}
另外,正确的写法并没有循环,所以把while改成了if,至少写错的情况下也不会有死循环的情况。
re
父类有带参数的构造方法,子类也必须提供带参数的构造方法
音乐常识
四分音符 = 1小节4拍
60bpm = 60小节每分钟= 1小节1秒钟
koreography是一个控制器
koreography track是一个个事件