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

原创 原型模式

原型模式什么是原型模式使用特定原型实例来创建特定对象,并通过拷贝原型来创建对象解决了什么问题对象创建较复杂,需要频繁创建,简化过程优势对创建较复杂的对象,简化创建过程,提高效率弊端需要考虑深拷贝与浅拷贝问题克隆方法位于类内,修改时需要进入类内 违反了开闭原则示例class Data{public: Data(string name) { Name = name; } string Name;};//怪物基类class Mon

2021-06-06 16:47:59 116

原创 观察者模式

观察者模式什么是观察者模式在对象之间定义一种一对多的关系,当某个对象状态改变时,与他存在依赖关系的所有对象都能收到通知并自动进行更新解决什么问题当一个对象改变需要通知其他对象,但是不希望与其耦合优势解耦合主题接口只依赖于观察者接口,修改时,遵从开闭原则,弊端当存在大量观察者对象时将会耗费大量时间通知被观察者只有在所有观察者通知返回后才能继续执行,任何一个通知都有可能堵塞被观察者对象当观察者与被观察者如果有循环依赖,可能诱发隐患示例enum Event{ Event_ONE,

2021-05-30 13:56:24 148

原创 享元模式

享元模式什么是享元模式通过运用共享技术有效的支持大量的细粒度对象解决什么问题在程序设计中有时需要大量的细粒度类实例对象(划分的具体的类)来表示数据,如果这些实例除了几个参数外基本是相同的,有时能大幅度减少类实例化的数量。如果将基本相同的参数移到类外面,在方法调用时传入,就能通过共享对象的实例来大幅度减少单个实例的数目。内部状态 在享元对象内部共享且不随外界环境变化而变化的状态。外部状态 随外界变化而变化,且不可以共享的状态。优势在需要大量细粒度对象实例时,通过共享对象实例,大幅度减少了类实例

2021-04-21 19:51:39 134

原创 游戏编程模式-命令模式

命令模式命令(command) 将请求封装为对象,从而使用不同的请求将客户端参数化,同时支持请求撤销与恢复。#include <iostream>using namespace std;class Receiver;class Inveoker;class BaseCommand;/*接收者 执行者 */class Receiver{public: void CommandA() { cout << "Command

2021-04-15 08:52:05 125

原创 Unity中传送带的实现

Unity中传送带的实现早上看到传送带感觉还挺有意思 简单实现下效果如下(录制一秒2帧 实际十分平滑):rigbody.position+=我们来看下当传送带进行position位移会发生什么rigbody.Moveposition()首先看下官方文档2018.4public void MovePosition (Vector3 position);//描述 将刚体移动到 /position/。 使用 Rigidbody.MovePosition 移动刚体,符合刚体的插值设置。

2021-03-28 11:43:53 4322 5

原创 C++函数执行时间测试

C++函数执行时间测试#include <iostream>#include <ctime>using namespace std;int main(){ clock_t start, finish; start = clock(); //function() finish = clock(); cout << "时间为:" << finish - start << "ms" << endl;

2021-03-28 10:17:50 138

原创 CPU缓存对二维数组遍历的影响

CPU缓存对二维数组遍历的影响int a[2048][2048];for(int x=0;x<2048;x++){ for(int y=0; y<2048; y++) { a[ y ][ x ]++; }}//如何优化使得效率更高 为什么//w64 clion#include <iostream>#include <ctime>using namespace std;int main(){ const int Row = 2000

2021-03-28 10:14:07 232

原创 Cache(高速缓冲存储器)

Cache(高速缓冲存储器)什么是Cache在多行并行存储系统中,由于I/0设备像内存请求的级别高于CPU访存,出现CPU等待I/0设备访存的现象,致使CPU空等一段时间,降低了CPU工作效率。为了避免与I/0争抢方寸,在CPU与主存中加一级缓存。这样,主存可以将CPU要取的信息提前送至缓存,一旦主存与I/0设备进行访问时,CPU可以在直接从缓存中读取所需信息,不必空等而影响效率。另一角度看,主存速度的提高跟不上CPU的发展,希望由高速缓存Cache解决主存与CPU之间速度不匹配问题。CPU在从主

2021-03-28 10:12:22 1359

原创 进程与线程

进程与线程进程进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:执行态,等待状态,就绪状态,创建状态,结束状态。运行状态(执行状态):进程正在处理器上运行。在单处理器环境下,每一时刻最多只有一个进程处于运行状态。就绪状态:进程已处于准备运行的状态,即进程获得了除处理器之外的一切所需资源,一旦得到处理器即可运行。阻塞状态:又称为等待状态,进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处

2021-03-25 15:23:25 79

原创 C++内存管理

C++内存管理C++ 内存分区:栈、堆、全局/静态存储区、常量存储区、代码区。栈:存放函数的局部变量、函数参数、返回地址等,由编译器自动分配和释放。堆:动态申请的内存空间,就是由 malloc 分配的内存块,由程序员控制它的分配和释放,如果程序执行结束还没有释放,操作系统会自动回收。全局区/静态存储区(.bss 段和 .data 段):存放全局变量和静态变量,程序运行结束操作系统自动释放,在 C 语言中,未初始化的放在 .bss 段中,初始化的放在 .data 段中,C++ 中不再区分了。常量存

2021-03-25 14:47:04 172

原创 unity简单技能系统

unity技能系统类类型概览CharacterSkillManager 角色技能管理器 挂载在角色 持有SkillData与释放器 通过释放器进行技能释放SkillDeployer 技能释放器基类 持有选取类型与影响效果两个接口 抽象函数释放方式SkillData 技能数据类 保存技能基本信息、攻击基本信息、影响效果、选择类型等IImpactEffects

2021-03-24 20:24:08 2841 2

原创 智能指针的实现:计数

智能指针的实现:计数Shared_ptr智能指针自动释放动态内存shared_ptr允许多个指针指向同一个对象 每个shared_ptr都有一个计数器当进行拷贝/赋值时计数器进行++ 当被销毁时(例如局部变量超出作用域)计数器-- 当计数器为0时 自动释放内存空间.unique bool类型 如果.use_count()为 1,返回true.use_count() 返回与该指针共享对象的指针数量 计数器分析构造函数 传入指针进行初始化析构函数 递减计数器 当计数器为0时 de

2021-03-17 09:29:47 748

原创 二叉查找树

二叉查找树的实现二叉查找树性质任意节点其左子树上任意值比节点值 小 右子树上任意值比节点值 大插入 大于当前节点向右子树 小于向左删除 当删除节点 具有左右子树 找到左子树最大值(最右边)与其交换删除 / 找到右子树最小值(最左边) 交换删除 满足查找树性质删除 当删除节点 **只有一边有子树时 将第一个子节点与其交换 **template<class T>struct TreeNode { T val; TreeNode<T> *left; TreeN

2021-03-16 17:22:55 81

原创 堆的实现

堆的实现性质: 堆以完全二叉树形式存在 父节点总比子节点大(最大堆)堆数组中 二叉堆中 子节点父节点为 i/2;节点Index为 i 左子节点为ix2右节点为ix2+1包含操作 上浮 下沉 插入删除上浮 大于子节点则交换 下沉 左右子节点中取最大者 与父节点比较class MaxHeap{private: vector<int> heap; int length;public: MaxHeap() {}; MaxHeap(int size); void in

2021-03-16 17:13:27 67

原创 c++中memset函数初步探究

c++中memset函数初步探究使用memset初始化出错 故探究总结一下函数原型memset函数是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个字节的内容全部设置为c指定的ASCII值,第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 其返回值为指向buffer的指针所在头文件<memory.h>或<string.h>。memset()函数原型是extern void *memset(void *buffer,

2021-03-03 20:10:07 192 1

原创 Leetcode 155最小栈

c155-最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。辅助栈:class MinStack {public: /** initialize your data structure here. */ stack<int> pool1; stack<int> po

2021-03-03 20:09:16 65 1

原创 2dCamera跟随

2dCamera跟随原理判断当前角色位置与Camera位置是否超过偏移值 超过偏移值则插值设置位置源码:public class CameraToPlayer : MonoBehaviour{ private Transform player; private Vector2 GoPos; [Tooltip("摄像头平滑移动速度")] public float Speed; [Tooltip("允许偏移的值")] public float

2020-12-29 19:57:35 189

原创 第二章 变量与基本类型

2.1基本内置类型C++定义了 包括算术类型和空类型(void)算术类型包含了 字符 整型数 布尔值和浮点数 分为两种类型 整型(包括字符和浮点型)和浮点型。算术类型在不同机器中尺寸有所区别(类型数据所占比特的最小值)函数不返回任何值时使用空类型作为返回类型C++ 算数类型类型含义最小尺寸bool布尔类型未定义char字符8位wchar_t宽字符16位char16_tUnicode字符16位char32_tUnicode字符3

2020-12-20 10:49:03 187 1

原创 Unity常用特性

Unity常用特性针对变量重命名 unity引用丢失inspector窗口显示数据例如 LIst 或者private 私有变量脚本变量分组查看编辑界面滑动条编辑界面注释弹出窗口注明标记结构体使其在Inspector窗口可见拓宽inspector文本框大小菜单栏调用方法新建Uniity按钮进行脚本添加编辑模式下运行脚本自定义脚本网页说明隐藏Public变量 不在编辑界面显示针对脚本重复添加问题 不允许重复添加针对过时方法直接选中最上级物体 避免误选子物体不允许调整透明度透明度强制要求游戏对象必须添加这个脚本

2020-12-20 10:34:17 730 1

空空如也

空空如也

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

TA关注的人

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