自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 GameFramework食用指南

GameFramework使用指南;

2022-07-01 16:34:10 1568 1

原创 IOS15.4无法运行WebGL2.0问题

国内所有网站居然搜不到这个问题是我最奇怪的;ios15.4更新之后Unity打包WebGL无法运行,卡在加载读条最后一点点,也不会报错;原因是apple更新15.4之后WebGL有大bug;Unity官方给了一个修改编译文件的方法,有解决这个问题的可能性;但是还是有大部分开发者在图形显示上遇到了更多的坑;apple官方说他们已经修复了这个bug至于什么更新发版未知;毕竟不在商店上架又抽不到成;以下解决方案互相独立,有可能解决但不一定;解决办法:1.将webgl2.0改为webgl1.0(意

2022-05-16 15:11:19 4436

原创 Lua实现面向对象

Lua实现面向对象Lua本身没有面向对象,但是可以通过function和表来模拟面向对象的过程;表tableLua中没有类的概念,可以用table模拟类的用法;table存放的键值对,可当做class中的字段和方法,都可以存进表中;首先创建公共方法:复制表中所有的键值对;function clone(tab) local ins = {} for key,var in pairs(tab)do ins[key] = var end return insendfunction c

2021-10-08 22:32:21 192

原创 Unity——对象池管理

Unity对象池管理一、Demo展示二.逻辑在游戏中会出现大量重复的物体需要频繁的创建和销毁;比如子弹,敌人,成就列表的格子等;频繁的创建删除物体会造成很大的开销,像这种大量创建重复且非持续性保持作用的对象我们会使用对象池将其管理起来,用空间换效率;对象池的要对外提供创建销毁对象的接口,已经添加对象池的接口;对内要提供创建对象,根据路径查找预制的接口;整体逻辑如下:二.加载/添加对象池添加资源路径,分为Resources文件夹下和SteamingAssets文件下资源;Resourc

2021-10-08 00:01:26 680

原创 Unity——HideFlags用法

HideFlagsHideFlags枚举属于Object类的属性;对应一个枚举类;用来控制对象的销毁,保存和是否在inspector界面中可见;public enum HideFlags { //默认 None = 0, //不在层级界面显示 HideInHierarchy = 1, //inspector界面不可见 HideInInspector = 2, //编辑的时候不会被保存 DontSaveInEditor = 4,

2021-10-07 17:54:03 2514

原创 DirectXLearn——Win32键盘事件

Win32键盘事件用枚举区分键盘状态:1.Press,按下2.Release,松开3.Invaild,无效记录按键的char值;定义键盘事件Event;使用bites表存所有key的状态,使用bites原因一共键位个数不超过256个,所以足够了;使用两个队列Queue分别记录键盘事件和char值;检测到VM_KEYDOWN的系统消息时,调用按下的回调事件,将keystate更改为true,push事件;检测到VM_KEYUP和VM_CHAR抬起一样;tips:在窗口不为焦点窗口时需要清

2021-10-06 19:19:41 277

原创 C++ostringstream用法

ostringstream用法1.类型转换要求包含头文件;字符串和int之间的互相转换;int num = 100;string str = "";std::ostringstream oss;oss << num;oss >> str; //str结果为"100";可用于自定义类型转换,类之间转换;class A{ int a;}class B{ int b;}A a;B b;std::ostringstream oss;os

2021-10-05 21:36:59 1529

原创 C++异常处理

C++异常处理一.关键Api介绍1.HRESULTH result,错误代码id;2.FormatMessage格式化消息字符串;DWORD FormatMessage( DWORD dwFlags, //格式化选项 LPCVOID lpSource, //消息定义的位置 DWORD dwMessageId, //消息标识符HRESULT DWORD dwLanguageId, //语言标识符 LPTSTR lpBuffer,

2021-10-04 18:07:13 247

原创 DirectX学习——Win32窗口框架

窗口框架WindowClass单例,负责窗口初始化注册和取消注册;负责提供静态方法;放在Window类内部,方便初始化时,wndProc(HandleMsgSetup)的赋值;class WindowClass{public: static const char* GetName() noexcept; static HINSTANCE GetInstance() noexcept;private: WindowClass() noexcept; //初始化窗口,创建窗口结

2021-10-03 22:25:00 219

原创 DirectX学习——Win32窗口创建

Win32窗口一、前言Win32窗口程序基础教程,前期项目设置:右键打开项目属性:按图配置:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLJID4l6-1633242169594)(C:/Users/GOD/AppData/Roaming/Typora/typora-user-images/image-20211003120933746.png)]这里Debug和Release模式要分开设置;因为我的项目不需要太高的精度;二、WinMain

2021-10-03 14:26:40 275

原创 Unity——观察者模式

观察者模式一、Demo展示二、设计思路我们假设一种情况,在app中修改了头像,在所有显示头像的UI中都需要更改相应的图片,一个个去获取然后调用刷新会非常麻烦;因此我们需要一个自动响应机制——观察者模式;核心:一个key对应多个Action(委托);流程:1.提前在每个需要响应的UI中添加监听事件;2.修改数据同时注册观察者,需要参数可传参;3.每一帧在LateUpdate中调用响应函数,把所有添加了注册了事件执行一遍;三、关键类1.带参数委托由于参数类型不确定,所以使用object

2021-09-29 17:35:13 1232

原创 Unity——与Android(Java)交互

Unity和Android交互一、前言Unity做安卓项目时,经常会碰到接安卓sdk的问题,需要获取Android权限,或者调用sdk中写好的Java代码;1.前期准备:1)配置java环境;下载jdk,同时配置环境变量;2)下载AndroidSDK;以下查看sdk,jdk,ndk安装是否正常;3)下载AndroidStudio;二、安卓打包成Jar/arr1.操作流程1.android studio中创Empty项目,项目名和sdk版本设置与Unity一致;2.修改项目b

2021-09-29 16:52:49 1314

原创 Unity——FSM有限状态机

FSM有限状态机一、设计思路1.共同的状态父类,提供可重写的进入,保持,退出该状态的生命周期方法;2.状态机,管理所有状态(增删查改),状态机运行方法(Run);3.在角色控制器中,实例化状态机,并初始化添加状态;二、关键类1.StateBase给物体所有状态提供的基类,所有状态比较继承这个基类,并且重写生命周期的方法;泛型T为角色控制类;字段:public int stateID; //状态ID,string也可public T owner; //角色的实例生命周期:

2021-09-28 23:57:45 1105

原创 Unity——可复用背包工具

#Unity可复用背包工具##Demo展示##设计思路游戏中有非常多的背包样式,比如玩家道具背包,商城,装备栏,技能栏等;每个形式的背包都单独写一份逻辑会非常繁琐,所以需要有一套好用的背包工具;这些背包有几个共同的特点:1.有多个排列好的方格子;2.每个方格子中有内容时,可被拖动且拖动逻辑相同;3.可添加使用删除格子中的物品;因此根据这些特点,使用ScrollView等组件,提取两个类,分别负责数据管理和拖动逻辑;##前期准备###1.界面设置制作三个界面,一个滚动背包面板,一个

2021-09-28 19:24:53 809

原创 Unity——无限滚动复用列表

#无限滚动复用列表##Demo展示 ##前言游戏中有非常多的下拉滚动菜单,比如成就列表,任务列表,以及背包仓库之类;如果列表内容非常丰富,会占用大量内存,这篇无限滚动复用ScrollView就是解决这种问题;还可以用来做朋友圈,聊天等;一般情况,ScrollView中每个Item的大小是一直的,使用ContentSizeFillter组件足够解决大部分问题;如果每个Item大小不一致,问题就复杂起来,需要做滚动位置判断,我这里做了大小适应;##设计思

2021-09-28 19:24:34 6127 2

原创 Unity——自动化代码生成

#自动化代码生成##一.前言由于之前写过关于UI框架的文章,这篇基于之前的基础,添加了自动生成代码的功能;如果学习过程有困惑可以跳转到之前的文章《Unity——基于UGUI的UI框架》;##二.效果展示##三.打包UIFrame我使用的是Rider编辑器,用其他的也可以;目的就是将之前写好的UIFrame框架的几个公共类打包成dll供调用,只有打包成dll才可以在Plugins和Scripts文件夹中都能使用;操作步骤如下:1.创建新的classLibrary解决方案:2.导入写好

2021-09-28 19:24:09 1145

原创 Unity——基于UGUI的UI框架

#基于UGUI的UI框架##一.Demo展示##二.关键类###MonoSingle继承MonoBehaviour的单例基类;做了一些特殊处理;保证场景中必须有GameInit名称的物体,所有单例管理器脚本都挂在该物体上;继承单例基类后,需要私有化构造;public class MonoSingle<T> : MonoBehaviour where T :MonoSingle<T>{ protected static T instance; p

2021-09-28 19:23:52 772 1

原创 Unity——编辑器拓展

#编辑器拓展##一、菜单栏拓展###Menultem[Menultem("Test/CreatePanel/func1 %_Q"),true,1]1、路径+快捷键,是否启用,排列顺序2、配合Selection.Object选中物体文件夹时启用3、方法必须是静态方法[MenuItem("Test/OpenPanel %_Q",true)]public static bool IsSelected(){ if (Selection.objects.Length > 0) retur

2021-09-28 19:22:50 796

原创 Unity——腾讯IM即时通讯SDK接入

前言  腾讯IM对Unity的支持很差,只提供接口返回数据,非常麻烦,然而安卓端使用Tuikt可以集成UI,自带安卓界面不需要写任何UI逻辑;  所以选择将Unity工程导出成安卓工程,在AndroidStudio中接入Tuikit的sdk;准备工作  对于刚刚接触sdk的新手,要配置好java环境,下载对应版本的sdk,ndk,jdk等;具体操作自行百度,很重要;Unity端工作  通过AndroidJavaClass和AndroidJavaObject类调用Java端写好的方法

2021-09-28 19:16:34 1269 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除