AI插件推荐

1)AI插件推荐
​2)VideoPlayer在Android上播放视频黑屏
3)Renderer.GetPropertyBlock问题
4)RectMask2D问题


这是第257篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

AI

Q:我们新项目有些AI,想用一些插件来实现,不知大佬们有没有什么AI插件推荐?据我所知有Behavior Designer ,Playmaker ,Bolt 这些,求科普几款功能和性能都不错的,谢谢。

A1:推荐 NodeCanvas。
功能亮点:
● 三个可完全切换的图形模块供你选择。
● 具有所有预期专业功能的时尚且直观的可视化节点编辑器。
(全部撤销/重做、放大/缩小、迷你地图、多选、复制、复制/粘贴、JSON 导入/导出、群组和注释等)
● 图形、GameObject和全局黑板变量,以创建可重复使用和以智能体为中心的参数行为。
● 具有实例或静态属性和字段的数据绑定变量。
● 使用UNET的网络同步变量(Network Sync Variable)。
(由于现已弃用UNET,所以会将其替换为新的网络解决方案)
● 预制件可覆盖的变量。
● 自动转换不同的变量数据类型。
● 支持所有变量类型开箱即用。
● 跨所有数量的智能体的可重复使用行为图。
● 所有三种图形模块之间的无缝子图形嵌套。
(行为子树、子状态机、子对话树)
● 完整的子图变量参数化和贴图。
● 模块化动作和条件任务设计。
● 条件反应行为树评估。
● 有条件和基于栈的FSM过渡。
● 丰富多彩和内容翔实的运行时可视化调试。
● 节点/任务浏览器,用以搜索、收藏和阅读内置文档。
● 首选类型配置器,以根据项目需求定制与类型相关的菜单。
● 图形迷你地图,以轻松浏览图形。
● 图形控制台,单击鼠标即可自动定位故障节点。
● 图形浏览器,用以搜索和查找图中的节点、任务和参数。
● 图形重构器,以批量重构缺失的节点、任务和反射引用。
● 实时运行时编辑,以更快速地完成设计目标。
● 经过优化的反射任务,以自动集成现有的代码 API。
● 内置事件系统,以在图形中沟通和传输数据。
● 清晰且记录完善的 API,以扩展 NodeCanvas 框架并创建自己的动作、条件、节点,甚至全新的图形模块。
● 对象和属性绘制器,以一切可能的方式自定义检查器。
● 与大量第三方资源集成。
● 与FlowCanvas flowScripts无缝集成。
● 用户友好,轻量级,无需设置。
● 性能稳定,初始化后零分配,异步图加载。
● 支持所有平台开箱即用。
● 包含全部C#源代码。

详细链接如下:
https://assetstore.unity.com/packages/tools/visual-scripting/nodecanvas-14914

Behaviac也不错,可惜TX不怎么维护了:
https://github.com/Tencent/behaviac/

感谢郑骁@UWA问答社区提供了回答

A2:搬运一位大佬的推荐:Baracuda。
https://github.com/Unity-Technologies/barracuda-release

感谢芭妮妮@UWA问答社区提供了回答

A3:搬运一个关于游戏AI框架选择的帖子:《What A.I technique is most suited to my game, FSM, BT, GOAP》

附一个AI相关Blog:AI分享站
http://www.aisharing.com/sitemap

感谢羽飞@UWA问答社区提供了回答

A4:腾讯开源的项目:behaviac
https://www.behaviac.com/language/zh/%e9%a6%96%e9%a1%b5/

behaviac是游戏AI的开发框架组件,也是游戏原型的快速设计工具。支持全平台,适用于客户端和服务器,助力游戏快速迭代开发 。

编辑器可以在PC上运行,操作方便直观可靠,支持实时和离线调试;编辑器可以导出xml,bson等多种格式,更可以导出C++、C#源码,提供最高效率。

运行时支持全平台,有C++和C#两个版本,原生支持Unity。

感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/60cafcefe58b4719dd3e25ac


Video

Q:这个问题只在A工程里出现,把同样的视频、代码拷贝到一个新工程里,然后把视频文件放到Addressables Group并设置不压缩,构建到手机上是可以正常播放的。但是在A工程里,把视频放到Addressables Group里设置不压缩,还是无法播放,并报错:

AndroidVideoMedia::OpenExtractor could not translate archive:/CAB-abafc77eff58910e7bc5f69ce62a4ed7/CAB-abafc77eff58910e7bc5f69ce62a4ed7.resource to local file. Make sure file exists, is on disk (not in memory) and not compressed.

请问大家有没有遇到类似问题?

A:虽然在Addressables Group里设置了不压缩,但在手机上还是播不了视频。所以想到是不是有什么地方压缩了Bundle,最后在build.gradle里找到,需要把 ‘.bundle’ 添加到gradle的noCompress里,如下:

aaptOptions {
noCompress ‘.unity3d’, ‘.ress’, ‘.resource’, ‘.obb’, ‘.meta’, ‘.wem’, ‘.bnk’, ‘.txt’, ‘.xml’,’.bundle’ //ADD_NoCompress_TAG
}

感谢题主wenzhao@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/60ddedb8e58b4719dd3e2890


Rendering

Q:从代码打印日志来看,GetPropertyBlock一开始获取的是什么?似乎没什么用:

public MeshRenderer mr;
    [Button]
    void DOTest()
    {
        MaterialPropertyBlock block = new MaterialPropertyBlock();
        mr.GetPropertyBlock(block);
        Debug.Log(block.isEmpty);      //打印true
        Color baseColor = block.GetColor("_Color");
        Debug.Log(baseColor.ToString());      //原始是白色 打印(0,0,0,0) 也就是没有获取到

        block.SetColor("_Color", Color.red);    //设置颜色
        mr.SetPropertyBlock(block);

        mr.GetPropertyBlock(block);        //再次获取
        Debug.Log(block.isEmpty);  //打印false
        baseColor = block.GetColor("_Color");
        Debug.Log(baseColor.ToString());    //打印(1,0,0,1)

    }

原先我以为通过Renderer.GetPropertyBlock(block);会把这个Renderer的材质属性都存到这个Block里面,然后我再修改里面的值,可是事实并不是这样,例如我只想修改Alpha,但是无法获取原始颜色:

MaterialPropertyBlock block = new MaterialPropertyBlock(); 
meshRenderer.GetPropertyBlock(block); 
Color baseColor = block.GetColor("_Color"); 
block.SetColor("_Color", new Color(baseColor.r, baseColor.g, baseColor.b, alpha)); 
meshRenderer.SetPropertyBlock(block);

A1:首先你没有往Property里面添加属性,所以它肯定是Empty,也就是你的属性表单里面是个空列表;然后通过Setcolor,这样其实应该是往属性表单里面添加了一个属性字段,这样列表就不为空了。至于为何打印出白色,应该是默认值吧,即你访问一个不存在的属性时为了避免返回null,所以给了你一个默认值(这里猜想的)。

想获取原始颜色,直接从材质上拿:

var mat = renderer.material;//renderer.sharedMaterial; Color c = mat.GetColor("_Color"); Debug.Log(c.ToString());

感谢李星@UWA问答社区提供了回答

A2:Renderer.HasPropertyBlock()可以用来判断一个Renderer是否已经有PropertyBlock了,通常没有调用SetPropertyBlock之前,GetPropertyBlock得到的都是“空”的结果。有一个情况比较特殊,在动画里面用来控制材质球后(比如控制材质球的颜色),使用GetPropertyBlock去获取MaterialPropertyBlock,这样得到的结果是非“空”的,理论上应该是动画控制材质球使用的就是SetPropertyBlock来实现颜色变化的。

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/60dbdc13e58b4719dd3e2861


UGUI

Q:我在带有RectMask2d的Scrollview节点下动态创建一些图标,发现打开页面时图标无法正常显示,滑动一下才显示出来,检查图标对象不可见时已经创建出来,同时对应的Inspector窗口缺少了Default UI Shader组件,请问有大佬知道是什么原因吗?

Debug发现图标对象能正常加入到RectMask2d的裁剪Hashset中,查看Frame Debug中图标不显示时与显示时少了一个Batch。

A:可以试试动态创建完成后调用Canvas.ForceUpdateCanvases,这个接口是让所有的UI元素及时刷新。
https://docs.unity3d.com/ScriptReference/Canvas.ForceUpdateCanvases.html

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/60ccc58fe58b4719dd3e2644

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
This extension requires one license per seat Requires Unity 4.6.0 or higher. Behavior trees are used by AAA studios to create a lifelike AI. With Behavior Designer, you can bring the power of behaviour trees to Unity! Behavior Designer is a behaviour tree implementation designed for everyone - programmers, artists, designers. Behavior Designer offers an intuitive visual editor with a powerful API allowing you to easily create new tasks. It also includes hundreds of tasks, PlayMaker integration, and extensive third party integ ration making it possible to create complex AIs without having to write a single line of code! Behavior Designer was designed from the ground up to be as efficient as possible with zero allocations after initialization. As a result, it runs great on all platforms including mobile. Behavior Designer is dedicated to behavior trees, which means that each update will be a better behavior tree implementation. Features: - An intuitive visual editor - A powerful API - Visual runtime debugger - Variables to communicate between tasks - Conditional Aborts - Built in event system - Unity 5 multiplayer support - Use existing code with reflection tasks - Hundreds of tasks - Evaluate tasks using Utility Theory - Realtime error detection - Binary or JSON serialization - Data-oriented design - Zero runtime allocations after startup - Object drawers (property drawers) - Includes runtime source code - Extensive documentation and videos - Sample projects available online - And more Addon Packs: - Formations Pack - Movement Pack - Tactical Pack Complete Projects: - Deathmatch AI Kit Third Party Integrations: - 2D Toolkit - A* Pathfinding Project (Movement Pack) - Adventure Creator - Anti-Cheat Toolkit - Apex Path (Movement Pack) - Blox - Camera Path Animator - Chronos - Cinema Director - Control Freak - Core GameKit - Curvy - Dialogue System - DOTween - Final IK - Glow Effect - ICode - Inventory Pro - LeanTween - Love/Hate -

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值