解决报错Invalid prop: type check failed for prop “value” .Expected String, Number, got Array 并实现子传父展示在页面
解决报错Invalid prop: type check failed for prop “value” .Expected String, Number, got Array 并实现子传父展示在页面。并跨页多选
在googleVR上调用设备相机的webcamtexture无法获取相机
不开启VR Supported时,调用相机,可正常开启相机。当开启VR Supported,并添加Card Board时,无法调用相机,不会弹出提示是否允许的对话框。如果是unity工程添加权限,打开Project Setting面板,勾选Player下的Custom main Manifest。这个问题困扰了很久,国内网站始终找不到解决方案,github上总算找到了类似的问题,开启VR Supported时,可能自动去掉了相机的权限请求,没有开启权限。如图所示,在文件对应位置添加以下代码。
Unity Game FrameWork—模块使用—GameEntry封装
GameEntry代码如下,调用GameEntry.Builtin和GameEntry.Custom初始化组件。案例包含的两个局部类型GameEntry(GameEntry.Builtin、GameEntry.Custom)局部类型(partial):允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。框架初了解,unity中基于Game FrameWork框架做了一层薄封装,简化调用时的写法。GameEntry.Builtin中封装了框架中的组件,并在游戏开始时初始化组件。
Unity Game FrameWork—模块使用—框架组件简要说明
Global Helper为相关配置为数据(文本,xml,json等)解析方式,其他组件的Helper选项配置,均为数据加载以及解析的结构定义,框架提供了一套默认的解析方式。UI也有分组,需注意。数据表使用的是框架默认的解析方式DefaultDataTableHelper,如果我们数据表定义的结构和Demo默认的不一样,这个时候我们需要扩展自己的数据解析脚本,并选择自定义的解析方式。调试窗口没必要纠结,使用默认的即可,如果有新的需求可以看具体的框架逻辑去修改,当然也有很多其他的调试工具和调试手段可以使用。
Unity 微信小游戏导出去logo
下面直接贴上我配置的代码,用下面的代码替换game.js文件的93-146行,我的配置里面更改了进度条样式以及文字样式。有两个地方需要去除logo,一个是去掉启动场景时的logo动画过渡,另一个是去掉启动背景进度条下面的白色logo图标。在微信开发者工具中打开game.js文件,如图框起来的部分为加载页素材配置,以及进度条样式。scaleMode字符串直接填写链接中的枚举即可,注意,设计的宽度高度也要一起修改。试过了,其他配置模式效果不太好,配置的方式如下。缩放模式的配置我是用的是默认配置,
Unity Game FrameWork—模块使用—游戏流程
通过流程,将不同的游戏状态进行解耦,便于各个模块分开管理,不同的功能在不同的流程中,相互独立,就不至于很多代码挤在一个脚本中。如检查资源流程、更新资源流程、选择服务器流程、登录服务器流程、创建角色流程、游戏选择菜单流程、游戏玩法流程等。可以看到这个流程执行着生命周期函数,流程的初始化、进入、离开、轮询、销毁可以帮助我们完成本流程的逻辑。勾选我们需要的流程,没用到的流程可不勾选。到此,流程可以正常执行,我们可以添加打印日志查看是否执行了流程。派生自ProcedureBase类,并实现自己的流程类。
Unity Game FrameWork—框架学习—游戏入口
三个框架入口中,我们很容易发现Demo框架入口与unity框架入口的联系,关系很清晰。但是原生框架的入口与unity框架入口的联系很模糊,只有unity框架的基础组件BaseComponent与原生框架入口建立了联系,以完成轮询和删除框架模块。通过查找GetModule方法的引用,我们可以发现unity框架的组件会获取原生框架的模块,大体上来说是一一对应的关系。具体是怎样的对应关系,是依据什么来获取模块的,我们继续往下学习。
Unity Game FrameWork—框架学习—组件对模块封装
我们再往下看一下实体管理器的接口是在哪实现的,通过断点调试可以看到,此时的模块名称变为了EntityManager。框架的结构已经很清晰了,里面还有很多未知的东西,比如数据提供者,数据持有者是什么东西,还不是很清楚,希望可以通过这个框架对游戏的整个流程以及各个模块有一个全面的了解。我们以实体组件为例,在实体组件中调用base.Awake()完成组件的注册之后,会立即获取模块。实体组件获取的模块是实体管理器的接口。这时,我们可以明白,组件通过管理器的接口创建管理器,组件的方法大多是调用管理器的方法来实现。
Unity Game FrameWork—框架学习—流程对状态机封装
IFsm:接口功能,获取有限状态机(名称、持有者、状态数量、是否正常运行、持续时间、当前状态,所有状态、数据(设置、移除、获取))、开始有限状态机、是否存在有限状态机状态。m_Fsms中的流程类是在ProduceManager流程管理器的初始化方法Initialize中创建状态,foreach流程轮询会判断流程是否销毁,销毁即跳过,只执行当前流程的Update。定义了流程的初始化、进入、轮询、离开、销毁生命周期方法。分析完代码,流程的本质其实是状态机,创建流程就是创建状态机,流程是对状态机进行了一层封装。
unity未使用变量警告
抑制显示使用如下代码,disable表示消除警告,restore表示恢复警告,中间放置报错的代码。警告提示有未使用的变量,实际上按照代码的逻辑并没有问题,也不影响运行,但是会显示出来惹人烦。
今日推荐
周排行