自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1238)
  • 资源 (1)
  • 收藏
  • 关注

原创 图形学学习推荐网址

http://www.scratchapixel.com/http://www.opengl-tutorial.org/http://ogldev.atspace.co.uk/index.htmlhttps://learnopengl.com/#!Introduction 英文打不开可参看:https://learnopengl-cn.github.io/ 或者 http://bullte...

2018-09-21 11:47:38 3732 8

原创 解读unity内置的软阴影处理方式

这里的_ShadowMapTexture_TexelSize的x、y、z、w分量分别是阴影贴图的水平像素个数倒数,垂直像素个数倒数,水平像素个数,垂直像素个数。而又因为是相邻每两个像素的归一化,所以绿色框住的起点是-1.5+2=0.5,于是得到上面的偏移:+float2(-1.5,0.5);得到一个点的权重,然后分别做四次即可,得到四个方向上的阴影贡献值,即可得到最后软阴影效果了。如上图粉色框框起来的x和y点,其水平起点为三角形的底/2,取负,所以是-1.5。如上图所示,红色的p点为阴影处的点。

2023-12-11 17:53:48 1266

原创 电脑自动重启关闭

https://www.ijinshan.com/pcyouhua/paper_20220513101551.shtml

2023-09-26 09:45:31 232

原创 fmod从指定的时间开始播放声音

【代码】fmod从指定的时间开始播放声音。

2023-08-28 14:07:49 334

原创 ios手机上跑游戏之后查看log方法

跑了一会之后,想看log了,此时用usb线连接mac,然后打开xcode,window->Devices and Simulators。最后把压缩文件改后缀为.zip即可,在Documents文件夹下,会找到log文件,前提是你的项目写文件log了。选择要看日志的app,然后download container,把文件下载到mac电脑上。ios手机跑游戏,此时不需要连接mac电脑。

2023-06-09 17:26:56 728

原创 Behaviac框架研究

Behaviac的名称来自Behavior和Logic的结合,它的优点是C++版本支持全平台,不仅可以用在客户端,也可以用在服务器端。一套逻辑可以根据情况分别在客户端和服务器运行,避免重复开发。本书的主要是对腾讯开源框架Behaviac分析和总结,并对C++的基础语法、高级特性举例学习。有道笔记连接:https://note.youdao.com/s/LQNyqXGJ。

2023-05-04 17:18:02 269 1

原创 应用未安装软件包似乎无效

有一个可能是,手机上已经安装了同名的apk文件,卸载然后安装即可。

2023-03-30 16:12:58 2890

原创 CommandInvokationFailure: Gradle build failed. 记录一次unity打android失败的原因

target architectures:选择armv7和arm64。可以看到其lib文件夹下,能看到arm7以及arm8的so文件。arm8和arm7兼具的,包体自然要大一些。

2023-03-30 16:05:07 720

原创 C++中std空间下函数的举例

std::less是标准库中的一个函数对象。std::less举例。std::pair举例。std::map举例。

2023-03-28 18:09:41 203

原创 C++导出类给unity使用

【代码】C++导出类给unity使用。

2023-03-21 17:23:24 202

原创 chatgpt真好用——std::bind和std::function

下面回归正题,就是为何使用std::bind生成一个可调用的对象,叫做callable object。已经如何使用std::bind绑定类的成员函数。我们将类Person的Add函数,对象p,以及参数3和一个占位参数std::placeholders::_2绑定成一个对象func。chatgpt是一本正经的回答,有时候也是一本正经的胡说八道,不过挺有意思的。然后后面在合适的适合调用。

2023-03-21 15:52:40 206

原创 fmod使用缓冲池之后,如何停止之前播放的声音

我们知道在fmod中会提供一个StudioEventEmitter的类,它是继承自MonoBehaviour的,我们可以在上面配置一个event的名字,然后设置其播放的声明周期。这里的问题也就带出来了一个,如果这个RuntimeStudioEventEmitter是复用的,那么instance成员只记录了当前播放的实例,而之前的实例如何停止呢?这是通常的一种做法,而实际使用中,由于MonoBehaviour特别多,会吃性能,所以我们通常的做法是,写一个池子复用。两种方法经过测试都是可行的。

2023-03-21 11:46:13 418

原创 unreal中创建蒙太奇动画和notify和animnotifystate

比较notify和animnotify,可以发现,animnotifystate,有更完整的时间周期,比如开始做啥、持续时间内做啥、结束做啥。而notify仅仅是一个通知、瞬间的通知而已。比如在做挥剑的时候,做碰撞检测,那可以使用animnotifystate即可。双击蓝图资源jumpnotify,常见的重写这几个方法:begin、end、tick方法。分别是开始、结束、持续tick,这里面自定义自己的方法体。在Notifies轨道右键,然后创建一个Notify,命名为任意,如:asdf3333。

2023-03-08 17:09:05 355

原创 Wwise的RTPC

全称是realtime parameter controls(译为,实时参数控制,rtpc)。主要用于根据游戏中发生的实时参数变化,实时控制各种Wwise对象,如音效对象、容器、总线、效果器的特定属性。在蓝图中使用SetRTPCValue即可,参数是在wwise中的参数名字;插件打包错误ue_UE集成WWise:概念与代码分析_漾漾ML的博客-CSDN博客。这是全局的rtpc,我们还可以针对每个事件建立一个单独的rtpc进行控制。新建一个参数:LowHealth。0的时候衰减到75%的音量。

2023-03-08 14:17:43 755

原创 Wwise集成到unreal

就是使用unreal自己的接口:StaticLoadObject,加在一个event资源即可,然后进行播放声音。需要在Plugins->Wwise->ThirdParty下新建一个Android目录,把上层中android需要的资源拷贝进去,这个按照打包的黄色警告提示操作即可。在继承的时候,关闭unreal编辑器,然后才能集成。一定要去掉最后面的’,否则会加载报错,同时写到/Game这一层即可,前面的可以去掉。1、确保对应的平台有资源,比如android平台需要一个android的资源包。

2023-03-08 14:15:14 569

原创 C++打印类型信息&&判断类型相等

【代码】C++打印类型信息&&判断类型相等。

2023-02-25 17:47:49 168

原创 Cheat Engine的使用

再具体点就是,如果写的一个方法,只是客户端调用,而不是跑在服务器上的,那这个有很大的风险,所以要通过rpc的调用,调用服务器的数据修改方法。我们可以首先知道怎么修改这个数值,比如我们按下鼠标左键,消耗物品,减少数值。为啥介绍这个工具呢?是为了能够测试客户端的程序,是否经过服务器的校验。逐个试下,发现是可以修改其内存的值的。

2023-01-02 16:07:33 563

原创 Unreal Engine C++ Multiplayer Survival Series #8: “Random Respawn Points“——数组和随机数的使用

数组填充:本课程介绍,如何使用TArray,以及随机数:

2022-12-31 15:08:33 167

原创 自定义事件实现rpc的调用C++和蓝图实现举例

修改角色的最大速度,方框1,让客户端先行,速度直接改变;然后方框2,告知服务器,自己的速度已经改变了。这里的startxxxx和stopxxxx的replicates为run on server。这里的是使用事件的方式,rpc是不能有返回值的,正好自定义事件也没有返回值,利用了这一点。这样可以防止客户端行走抖动的问题。1.自定义事件的方式实现rpc。

2022-12-30 11:05:32 903 3

原创 unreal中actor的property replicate简单小节

在编辑器下,选择Net Mode为Play As Listen Server,然后Number of Players为2,运行之后,然后使用Attach to Process即可调试,也可以打log方式,在控制台看log。到目前位置,我们在不用rpc的方式,而是为属性添加标签ReplicatedUsing的方式,实现了属性的同步。他的唯一的缺点是,要时刻区分初,当前这段代码是在客户端还是在服务器。这里存疑的地方是,子弹的碰撞是在服务器上的?还原的过程相对比较简单,主要的精力花在了编译报错和调试的过程。

2022-12-29 16:47:07 660

原创 unreal编译源码搭建dedicated server的流水账——但是细

1、下载源码,这个要使用git hub账户,授权一波才行。选择:Development Editor,Win64。执行完1之后,点击2,生产vs的.sln工程文件。使用vs或者rider打开UE5.sln。然后右键UE5,Build即可。耗费约1.5个小时。

2022-12-27 10:15:57 1782 3

原创 C++中头文件相互依赖的问题——终极大法之接口隔离原则

我们通过接口的方式,解决了依赖具体某个类的问题。上层模块,不能依赖具体的底层模块,而应该依赖于接口,依赖于抽象。由于前向声明而没有定义的类是不完整的,所以B中只能包含:A的指针、引用、或者用于函数形参的指针和引用,不能用来定义对象,或访问类的成员。参考:https://blog.csdn.net/u010330109/article/details/120800927。抽象一层接口,让A实现此接口;B中用接口接收A的指针。ok,这样通过接口隔离原则,解决了头文件相互依赖的问题。为啥B中只能包含A的指针呢?

2022-12-26 12:07:33 660

原创 C++中static修饰局部变量

https://blog.csdn.net/qq_47406941/article/details/113614061ConstructorHelpers::FObjectFinder” vs. “static ConstructorHelpers::FObjectFinder”举例:总结:函数中的static修饰的遍历,函数调用结束之后,并未销毁还是在内存里,下次调用还是上次的变量。保证了不重复加载。也就是ue中经常看到的:

2022-12-06 10:35:32 345

原创 C++:深拷贝和浅拷贝——拷贝构造、赋值构造必须自定义

就点击是,然后等待即可。

2022-12-04 13:53:55 704

原创 ue:the following modules are missing or built with a different engine version:

就点击是,然后等待即可。

2022-12-03 12:19:52 1082

原创 unreal中的ui逻辑热更方案

https://gitcode.net/mirrors/Tencent/UnLua/-/tree/master/Docshttps://docs.unrealengine.com/5.0/zh-CN/umg-ui-designer-quick-start-guide/

2022-11-28 14:21:07 276

原创 wwise集成到unreal

https://www.audiokinetic.com/zh/learn/videos/?course=wwise101https://www.bilibili.com/video/BV1XB4y1k7KR/?spm_id_from=333.337.search-card.all.click

2022-11-28 14:15:26 173

原创 C++:new运算符的重载

参考:https://zhuanlan.zhihu.com/p/269251267。size_t size:为分配的内存的大小。2.1 类的new和delete重载。void*:指向分配的内存的指针。

2022-11-21 12:00:23 1500

原创 C++:用模板判断类的继承关系

这也就解释了:BASE和DERIVED具有继承关系的时候,返回的是:operator DERIVED const volatile* ();当A和B有继承关系的时候,优先调用:operator DERIVED * () ,因为其无const。1、非const对象,优先调用非const方法;上面的say构成重载关系。因为优先调用这个无const的转换函数。所以返回的Result为1。

2022-11-18 18:20:10 544

原创 C++:模板推断类型&typedef typename

【代码】C++:模板推断类型。

2022-11-18 10:50:42 227

原创 C++:子类调用父类方法

【代码】C++:子类调用父类方法。

2022-11-17 19:35:07 1510

原创 C++:const修饰成员函数

【代码】C++:const修饰成员函数。

2022-11-17 19:20:01 104

原创 C++:利用模板判断类型相同&数组类型判断&指针&引用类型判断

【代码】C++:利用模板判断类型相同&数组类型判断&指针&引用类型判断。

2022-11-17 14:22:43 1220

原创 C++:int*和int*&怎么理解

p和p2是一个人,地址都相同。

2022-11-17 11:19:15 280

原创 C++:如何判断一个类型为类,模板类型推断

当且仅当,传入的类型Type为class的时候,AnswerYes::*才合法。No的长度为2个字节;Yes的长度为1个字节;所以Result为0。AnswerYes::*为类成员函数指针。TYesNoTester为两个函数重载;这段代码参考behaviac的源代码。

2022-11-17 10:55:21 485

原创 C++:如何在已分配的内存上构造对象

参考:https://www.bilibili.com/read/cv14906544/

2022-11-15 17:21:37 246

原创 腾讯开源项目——behaviac——学习2

胶水代码:编辑器自动生成的代码。

2022-11-11 11:43:36 1377

原创 腾讯开源项目——behaviac——学习1

1、c++版本支持全平台,可以用在客户端,也可以用作服务端。类型信息:包括Agent类及其成员属性、成员方法和实例等,以及枚举和结构体类型。行为树:描述了指定的agent类型的行为,利用各种节点和类型信息来创建行为树。在编辑器种创建一个类型,并且创建它的属性和方法,导出C++或者C#源码。运行时:根据编辑器导出的类型信息,执行导出的行为树。xml和bson作为数据,可以被加载;bahaviac:编辑器+运行时。配置文件格式:xml、bson。代码类型:cpp、c#HTN:层次任务网络。

2022-11-10 20:25:32 1616

原创 Objective-C——基础知识4(description关键字)

main.m文件:对Person的对象p,赋值两个属性,然后调用其description方法,这里直接使用NSLog(@“%@”, p)打印对象即可。Person.m文件:重写了父类NSObject的description方法,类似于C#的ToString()方法。Person.h文件:声明两个属性name 和 age。

2022-11-10 14:05:48 123

原创 Objective-C——基础知识3(继承 super关键字)

【代码】Objective-C——基础知识2(继承 super关键字)

2022-11-10 11:44:02 124

初中英语句子成分及五种基本句型讲解与练习

初中英语句子成分及五种基本句型讲解与练习,能够很好的掌握句子结构。

2017-10-15

空空如也

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

TA关注的人

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