自定义博客皮肤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)
  • 收藏
  • 关注

原创 子类和父类签名不一致导致的错误

在子类中写的是Monster* createMonster(int life, int magic, int attack) ,导致这个错误,这是因为什么。❗ 子类中的函数 和 父类中纯虚函数 签名不一致,所以 并没有真正“重写”父类的纯虚函数,编译器认为该子类仍是抽象类,不能实例化对象。由于函数签名(即函数名 + 参数类型)不一致,所以子类这个函数并没有重写父类的纯虚函数,只是自己添加了一个新的同名函数而已。✅ 方案二:保留父类签名,子类内部自行处理默认值或其他机制(不推荐)这是一个不带参数的纯虚函数。

2025-06-02 13:50:09 97

原创 在UML图中,构造函数和析构函数需要写在图里吗

如果你用的是某些工具(如 StarUML、PlantUML),也可以通过设置控制是否自动生成构造/析构函数。在 UML 类图中,构造函数和析构函数可以写,也可以不写,这取决于你想要表达的细节程度和读者的需求。构造函数: 像普通方法一样表示,通常函数名与类名相同(如 C++)。在UML图中,构造函数和析构函数需要写在图里吗。析构函数(C++): 函数名前加 ~ 符号。

2025-06-02 12:48:10 115

原创 c++构造函数冒号问题

这是初始化列表,表示在构造对象时,直接用传入的参数 life, magic, attack 来初始化类的成员变量 m_life, m_magic, m_attack。不过这是在函数体内赋值,而初始化列表是在对象构造时立即完成初始化,性能更好,且必须用于一些只能在构造阶段初始化的成员(例如 const 成员、引用类型成员等)。

2025-06-02 11:53:34 228

原创 指针写作问题(风格问题,与逻辑无关)

这就是为何建议 不要在一行声明多个指针变量,即使你选择了 Monster* monster 的写法。更符合“类型修饰”的思维,Monster* 表示这是一个指向 Monster 类型的指针。这是一个 风格问题,即写法规范问题,不影响程序功能。无论哪种写法,都不要在一行中声明多个指针变量。指针,一般是Monster* monster,还是写成Monster。monster比较好,就是。🔍 实际风格取决于团队规范。

2025-06-02 11:42:43 75

原创 头文件引用使用引号和尖括号的问题

如果你想把自己写的代码像标准库一样组织起来,也可以使用 <xxx.h>,只要你配置好路径。否则推荐用 “”,简单明了、跨平台无误。这是一个非常经典但容易混淆的问题,涉及 C/C++ 中的头文件包含规则。这些目录已经默认配置在编译器的搜索路径中,使用 #include 就可以自动找到。这样你自己的头文件就能用 #include <yourfile.h> 的方式引用。为啥自己写的头文件只能用双引号引用,而ide提供的头文件可以使用尖括号引用。因为你写的头文件一般都放在项目目录或源码文件夹里,不在系统目录下。

2025-06-01 22:16:35 209

原创 声明和定义的区别

2.请分析我对声明和定义的理解是否正确,声明是创造出这个类,而定义是对类和类的成员进行详细的逻辑代码书写,也叫实现,因而定义也可以完全等同于实现。“声明是创造出这个类,而定义是对类和类的成员进行详细的逻辑代码书写,也叫实现,因而定义也可以完全等同于实现。“声明确定了变量的类型,定义为变量赋一个特定的值。作用:告诉编译器某个变量、函数或类的名字、类型和存在形式,但不分配内存也不提供实现。关键词:真正“实现”了这个东西,是“落地”的部分。作用:为变量分配内存,或提供函数/类的完整实现。

2025-06-01 21:55:43 91

原创 快捷方式积累

常用快捷方式

2024-12-23 20:27:53 152

原创 阅读时遇到的代码(没有干货,纯手抄)《3D数学基础:图形与游戏开发》6.2节 Vector3类

今天阅读书籍《3D数学基础:图形与游戏开发》时,遇到了一些代码。因为干看着读不下去,因此抄一遍,便于理解和阅读。6.2节 Vector3类。

2024-12-17 18:40:36 147

原创 MMORPG跟做-05-02 人物移动及人物平滑转身

使用差值运算Quaternion.Lerp()方法,让人物转身的速度达到一个合适的值,以此获得一个较为合理的转向效果。一开始考虑直接使用transform.LookAt()方法,但是视觉效果上,人物转身特别生硬,需要有一个平滑转身的效果,因此换一种方法,使用四元数差值运算。人物在地面上行走,并且射线检测需要与地面碰撞,因此创建一个地面,并给地面设置一个标签,例如将地面的标签设置为“Ground”。人物移动需要有一个目标位置,当鼠标点击屏幕,人物就要移动到屏幕的对应位置,因此,需要使用到射线检测。

2024-12-14 20:53:29 314

原创 csdn写文章时会用到的标签-积累

HTML标签积累

2024-12-13 21:05:47 223

原创 【Unity】伤害冒字(代码待优化)

跟的教程是比较早的,14年录制的一套视频。教程中使用的NGUI。扫了一眼ngui的HUDText.cs,没有耐心阅读(超过两百行,不想阅读了),因此使用TextMeshPro这个UI控件制作该效果(也可以使用Text制作。用TextMeshPro的原因,是因为之前很少用到,在这里换个新的控件试试)。该脚本提供的方法在每次调用后都先创建再销毁,可以考虑使用对象池。每次调用后不是销毁,而是禁用,然后再调用ShowText方法时,再启用TextMeshPro(如果使用Text制作该效果,则启用Text)。

2024-04-09 15:45:51 423

原创 【unity】将技能拖入快捷栏

为了赶进度,目前先用这种方法实现想要的功能。日后将对该部分代码进行重构,消除冗余代码,找到更简便的逻辑思路。主要实现的实际释放拖拽后的操作。该脚本挂载在技能Icon上面。这次是将UI拖入指定的位置。依旧是拖拽UI的功能。

2024-04-06 15:54:41 512 1

原创 unity拖拽背包物体,并交换两个物体的信息

前几天看了一个教程,背包物品交换。由于教程中使用的是ngui,很多代码需要使用UGUI重新写,因此苦恼了几天。我遇到了以下问题,在此详细罗列,以记录错误的原因和修改的方法,供日后阅读查找。一、背包中的物品在拖拽之后放入指定的空格子(问题1:不知道该怎么获得指定的空格子;问题3:更新格子内的物品信息时找不到该物品);二、背包中的物品在拖拽之后放入原来的格子(问题2:少了两行代码);

2024-04-06 15:14:48 1874 2

原创 找bug找错了方向。物体禁用时获得GameObject可使用Inspector面板指定方式。

工程运行之前,持有该脚本物体是禁用状态。所以用了Inspector面板指定对象的方法。(实际上我更想使用程代码进行赋值。今天又去从头捋了一遍,发现方法没有写错。后来突然灵光一闪,想到一个最简单的错误,变量没有赋值。这是我自己画的表情包。也不知道在哪看的,也不知道叫啥名字,突然想起来,就仿照着画了一个。找了两天的bug,问了GPT,查了论坛,都没有解决。一直以为是拖拽的功能写的不对。这个表情包最能表达我现在的心情。验证之后,真的,变量没有赋值。

2024-04-03 17:18:34 203 2

原创 20240329开发过程中的问题

Inve脚本中的一个方法在另外一个FuB脚本中被调用,由于Inve在Awake()方法中给instance赋值,所以即使禁用Inve脚本,FuB脚本依旧可以调用到。父子物体同时挂载了同一个脚本(且叫它Inve)。该脚本中含有Awake方法,并且做成了单例模式。2.父物体copy子物体身上的Inve,则只执行子物体的Inve。子物体copy父物体的Inve组件时,则只执行父物体的Inve。1.父子物体“同时禁用Inve、只有一个禁用、都不禁用”这四种情况,点击按钮,仍然能执行其身上脚本。

2024-03-29 16:25:48 238 1

原创 关于unity中读取txt文件时报错:Input string was not in a correct format.

空白行导致读取txt文件时报错。

2024-03-28 16:23:45 629

原创 unity中Transform.Find&Transform.root.Find&GameObject.Find及激活未激活

• 分析GameObject.Find列,可以得出结论,GameObject.Find可以找到所有已激活的物体(前提是其父物体也是激活状态),所有未激活的物体(及其子物体,无论子物体自身是否激活)都找不到。与辈分无关(即使挂载脚本的对象是孙子辈的,也可以找到爷爷辈的已激活的物体)。其余物体(即同辈的,父辈的,爷爷辈的,孙子辈的,重孙子辈的)都找不到,无论是否激活。从本人(挂载测试脚本的对象)的爷爷到本人的孙子,共4种情况(其中,本人未激活,本人父辈祖辈未激活,脚本无法运行,所以4种情况)。

2023-06-03 14:32:55 1819 1

原创 20230530 犯傻日记

今天,我重新拾起这个问题,联调,打印日志,结果,怎么着,tnnd这个脚本居然被我禁用了,我还傻了吧唧地在那儿找半天。一个bug,事件调用,能运行,但是没有我想要的效果。查了好几天,各种贴吧论坛,各种找,结果,都没有解决办法。在运行unity工程之前,先检查,脚本是否被禁用。

2023-05-30 23:21:04 78 1

原创 20230512关于敏捷编程的一些想法

我认为的敏捷开发时这样的:前期设计的时候,已经考虑到将来可能发生改变的绝大多数功能及模块,并且提前设计好框架,使它对迭代升级之后的软件有较好的兼容性。并且在增删改某些功能的时候,能够快速、少量地进行,修改某一部分的时候,对其他模块的影响达到一个尽可能小的值。这样设计出来的编码,能够被很容易地增删改。还未真正学过敏捷编程,并且没有看过《敏捷软件开发:原则、模式与实践》这本书。等待某天学完敏捷编程,看完《敏捷软件开发:原则、模式与实践》这本书,再来修改今天的看法。并且,在敏捷编程过程中,一定要有及时的重构。

2023-05-12 09:32:37 88 1

空空如也

空空如也

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

TA关注的人

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