Category Archives: Uncategorized
UE4迭代器删除元素
在一个Unreal Engine的项目中,发现TArray<AActor>迭代器循环,actor::destroy会在数组中移除该元素,和element.remove()一样, 引起迭代器失效,很奇怪。经调查原来是因为在Actor::endplay里代码把自身从数组中移除了。我因为之前没有在迭代器里删除过元素,在查这个Bug过程中,我看了下数组Remove的代码。

C++ vector::erase操作删除一个元素会导致后面所有的元素都会向前移动一个位置,这些元素的地址发生了变化,所以当前位置到容器末尾元素的所有迭代器全部失效。

这里,由于移除元素,移除元素后面的元素都向前移动,所以导致第二个元素3无法被移除掉。
最近的事
十一月十四号的事
周六参加了一个小的行业分享会,好像说起来是我回成都后在成都参加的第一个外部的分享会。以下是我自己听后的理解,不全代表作者的观点。
第一个由邓春燕带来的《技术转型管理的思考》,分享了从做事、做人和思维上的转变。做事上,转型管理会有从管理自己到管理他人的转变。管理他人的前提是要先管理好自己。所以一个好的管理者,应有一个好的自我管理。春燕她自己一个时间管理,早上开会前和晚上6后是他的一个自我学习和工作总结的时间。如果做纯管理,思维上从技术性思维向一个商业性思维的转变,比如项目需要一个“天气系统”的考量。因为管理通常意味着更多的责任,自己做事的目的性会更强,遇到挫折更加坚韧。由于工作内容的转变,当然会有新的挑战,比如招聘。也会做一些以前不情愿做的事,比如辞退员工。
第二个是由Raynald Bouchard带来的《Focussing on Productivity》,分享了pipeline tool的重要性及育碧在优化pipeline上做的工作。主要集中在以下几点。
- 通过增加工具收集数据,特别是错误数据。分析pipeline瓶颈。降低相互等待的情况。
- 增加自动化工具,节约人力时间。
- 不断优化生产工具,更好用,更少的bug,让使用者专注于内容。
- 当下开放大世界越来越流行,做开放大世界,Split data对提升效率上是一个很重要的点,可以减少互相等待,及缩小反馈周期。
- 内容验证,越早越好。育碧尽可能的做内容验证,尽早发现错误。通常在生产者提交前就会做尽可能多的内容检查,比如美术内容有错误,不会被渲染出来。
邓春燕在分享开头提到了他们公司的类似“照扫建模”的技术,可以生成高质量高精度的模型,包括人物脸部模型用于游戏中。无独有偶最近我们公司美术师也在公司分享了照扫技术的应用。得益于当前计算机强大的计算能力,三维建模的工作量可以进一步降低。对照扫技术感兴趣可以看下开源的软件Meshroom。
Things new
- 最近在学UE4蓝图,学习UE4 蓝图最开始是抗拒的(笑),学会了,感觉用着还是蛮顺手的。不熟悉蓝图时感觉实现一个功能不如自己写代码快,很多简单的功能,自己写代码知道怎么做,用蓝图找模块网上查半天,而且觉得用蓝图的思维模式和写代码的思维模式还是有差别。当学会了蓝图,发现其实很多gameplay的功能比写代码快,因为功能模块的代码引擎帮你“复制”好了,不要自己再去复制自己的代码了(笑)。
- 用D3D DX12实现了一个3D BOX,成功显示出来效果很炫啊。都快忘了大学用OpenGL画一个图形的惊艳感了(那也算是自己的图形引擎第一步[笑])
六月五号的事
shader真是程序员的玩具,可以操控顶点位置,像素颜色,任意尝试,破坏,构建^_^
五月三十一号的事
周末和莎莎在家看综艺-奇遇人生第8期《李诞和阿雅日本行禅悟人生,谈“吐槽大会”痛并快乐着》,李诞是本期嘉宾(2018年的综艺)。李诞讲到:“我如果再说生活难受就太不是人了,我生活其实挺好过的,没有什么大岔子,也没有很累,没什么错误,没什么问题”。
BLOG RETURN
两年多前域名到期没有续费,域名被回收了,很长时间被处于不能重新免费取回状态。这几年个人以文字为主的创作发布平台在变化,微博,微信公众号逐渐的崛起,个人博客在逐渐走向历史。我订阅的个人博客基本是一片灰,基本也是几年都没更新了。
今天工作看到一个个人博客让我想起我还有博客这回事 :p,顺手搜了下域名,一看我的域名都已经可以正常注册了.. 然后费了点周折的弄好。我忘记了博客密码,还不能邮箱找回.. 我还得到数据库里改。总之,博客又弄回来了。看着以前的文章,还有那些未发表的文字,看到了我曾经的想法,肯定有些感慨,哈哈。
很巧今天是2019的最后一天,第一次在新环境写博客。今年工作依然很忙,今年也去了不少地方,也要感谢聪聪 ;p。
期待新的一年。2019年过去了,我很…
2013个人最佳
MonoDevelop使用中文注释解决方案
1. 乱码问题
乱码问题主要体现在Visual Studio的脚本在MonoDevelop下打开出现乱码和Mac下显示乱码两种。
首先保证MonoDevelop以UTF-8编码来保存脚本。
1.1 Visual Studio的脚本在MonoDevelop下打开出现乱码
VS保存的脚本应该没有以UTF-8来保存,所以以VS2008为例,在工具-选项-环境-文档里将“不能以代码页的编码格式保存数据时将文档保存为Unicode(U)”勾上即可(VS2010要勾上选项页面左下角的“显示更多”)。
1.2 Mac下中文显示乱码
Mac下多半是因为没有使用正确的字体导致的,根据网友的分享,使用Arial Unicode Ms该字体可解决。
2. 使用中文注释后,Debug打断点不能正确定位
这 是换行符导致。 MonoDevelop默认应该使用的是Unix换行,注释使用了中文后,比较奇怪是使用Unix换行打断点就不能正确定位了,但是我发现换成 Windows或Native换行即可解决。因为考虑到跨平台性,所以选Native即可。
Project-Solution Options-Code Formatting-Text file下选择Native对当前项目生效。Tools-Option下设置对新项目生效。
(Advance: 如果新建脚本出来编辑器提示需要转换换行风格,可以通过修改MonoDevelop的脚本模板来避免提示。修改地址:Unity目录-Editor-Data-Resources-ScriptTemplates下)
解决上述问题,解决了我目前使用MonoDevelop使用中文注释遇到的障碍。
参考:http://game.ceeger.com/forum/read.php?tid=4143