自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity中的MVC框架

好处1.各司其职,互不干涉 --编程思路更清晰2.有利开发中的分工 -- 多人协同开发时,同步并行3.有利于组件重用 -- 项目换皮时,功能变化小时,提高开发效率坏处1.增加了程序文件的体量 -- 脚本由一变三2.增加了结构的复杂性 --对于不清楚MVC原理的人不友好3.效率相对较低 -- 对象之间的相互跳转,始终伴随着一定开销铁打的M和V,流水的X数据和界面是必备的内容我们可以通过改变X元素来优化原本的MVC也就是改变联系和处理M(数据)和V(界面)的方式。

2024-05-30 16:35:29 1309 1

原创 xLua背包实践

1.巩固学习的AB包+Lua语法+xLua解决方案的3部分知识2.学会Unity+Lua+VSCode环境调试3.学会Unity结合xLua进行游戏功能开发4.学会制作Lua文件迁徙小工具。

2024-05-28 19:40:17 1088

原创 xLua热更新解决方案

更新luaCallCSharp。

2024-04-29 23:10:54 824

原创 UGUI 进阶

好处:需要监听自定义事件的控件挂载继承实现了接口的脚本就可以监听到一些特殊事件可以通过它实现一些长按,双击拖拽等功能坏处:不方便管理,需要自己写脚本继承接口挂载到对应控件上,比较麻烦EventTrigger可以让我们写更少的代码可以在面板类中处理面板控件的事件逻辑,更加的面向对象,便于管理。

2024-03-30 19:32:48 872

原创 C++ 侯捷 程序设计(Ⅱ)兼谈对象模型 笔记

侯捷老师使用分数 Fraction举例,分数理应可以被看作是小数提供了Fraction类对象一个转换为double的方法,当碰到需要转换为double的情况下,会调用该方法。的就是转换函数,没有return type,返回类型就是名称double这一类型。编译器会找是否有全局函数 operator + ,第一个参数是整数或浮点数(整数是浮点数),第二个参数是Fraction,若有这么个函数,就会走得通。但示例代码中没有这么一个全局函数,故会去找有没有将fraction转换为double的转换函数。

2024-03-22 17:27:11 2114

原创 Unity-UGUI系统

CanvasScreen Space - Overlay:屏幕空间,覆盖模式,UI始终在前Screen Space -Camera:屏幕空间,摄像机模式,3D物体可以显示在UI之前World Space:世界空间,3D模式。

2024-03-21 16:14:52 2129

原创 C++ 组合 委托 继承 组合使用

Component有子类Primitive和Composite,Primitive放单体(如文件系统中的文件),Composite组合物(容纳多个单体以及其它组合物),Composite中使用了委托,存了父类Component指针的数组。创建自己时会调用private构造函数(图中-号表示私有,#号表示protected,+号public),私有的构造函数会调用addPrototype函数(父类函数),会把得到的指针放到父类数组中。右边有3种不同view,同样的一个变化其它条状图什么的也要变化。

2024-03-19 15:54:01 1121 1

原创 C++ 虚函数与多态

父类CDocument中的OnFileOpen函数会调用Serialize(),而Serialize(),在父类中是虚函数,具体实现根据子类CMyDoc中覆写的Serialize()实现。非虚函数:不希望子类重新定义(覆写override)父类的函数。语法上,在成员函数前加上virtual 关键字,就成了虚函数。虚函数:希望派生类覆写父类,且父类已经对该函数有定义。覆写父类该函数,父类中没有定义该函数(只是声明)

2024-03-18 14:49:03 524

原创 C++ 操作符重载和临时对象

以复数为例返回值 用引用(速度快),无需知道是以接收如果用指针,则还要用指针来接收(麻烦)。操作符重载用而不是,是考虑到可能会出现这种情况,所以返回值不是void而是 complex&。

2024-03-13 16:11:11 357

原创 C++ 类的函数等

在类内定义的函数叫内联函数但最后是否真的是内联函数,得看编译器。太复杂的函数无法作为内联函数,哪怕加上inline前缀(只是建议) 编译器也不一定认。

2024-03-12 15:10:34 410 1

原创 C# 特性

/继承特性基类//特性中的成员 一般根据需求来写#region 限制自定义特性的使用范围//通过为特性类 加特性 限制其使用范围//参数一: AttributeTargets 特性能够用在哪些地方//参数二 AllowMultiple 是否允许多个特性实例用在同一目标上//参数三 Inherited 特性是否能被派生类和重写成员继承#endregion总结:特性是用于 为元数据再添加更多的额外信息(变量、方法等等)我们可以通过反射获取这些额外的数据 来进行一些特殊的处理。

2024-03-11 23:32:14 499

原创 C#委托和事件

/访问修饰符默认不写 为public 在别的命名空间中也能使用//private 在别的命名空间不能使用//申明一个用来存储无参无返回值函数的容器//这里只定义规则,并没有使用//委托规则的申明 不能重名(同一语句块中)//不能重载!//申明一个用来存储返回值为int 有一个int参数的函数的容器//委托变量是函数的容器//委托常用在:1.作为类的成员 2.作为函数的参数class Test//先处理一些别的逻辑,当这些逻辑处理完了,再执行传入的函数int i = 1;

2024-03-11 15:29:40 1041 1

原创 C# 垃圾回收

声明时会判断0代内存有无空间,若有,则分配空间,若无,则会触发垃圾回收,比如分配a,b,c时都有空间,但分配d时空间不够了,则会从0代内存根部开始找各对象是否被引用,不可达的对象会被认为是垃圾,然后释放掉,而剩余的可达对象会。0代垃圾回收时,对象搬迁到1代内存,则1代内存迟早会慢,1代内存空间不够时,会触发垃圾回收,且0代,1代会一起垃圾回收(因为搬迁对象到1代说明0代内存也满了),搬迁可达对象到2代内存。在C#中,当引用类型的堆内存被回收时,那么析构函数 也会被调用(只有当垃圾真正被回收时才会调用)。

2024-03-09 18:05:33 449 1

原创 C++ 栈、堆与内存管理

一格4字节,complex有实部虚部占8字节,但上面的32字节,下面的4字节,以及2个红色的格子cookie,总共52字节,但要16字节的倍数,所以64字节(因为内存对齐?),看起来浪费了很大的空间,但是以后操作系统回收空间可能需要这些内容。delete删掉这块时看cookie,有没有[]不影响整块删除,但不加[]会少调用析构函数,数组元素的除了第一个外的分配的内存空间没删掉,cookie记录长度,40h表示64,借用最后一位,1表示操作系统给出去,0表示收回去。存在于某作用域的一块内存空间。

2024-03-08 14:05:48 319 1

原创 C++ 三个特殊函数:拷贝构造、拷贝赋值、析构

复制构造函数,其实也是一个函数,如果你给它定义的参数,是一个类型,而不是一个类型的引用,它会首先调用该类型的复制构造函数,重新构造一个新的实例。复数也存在拷贝构造和赋值,但是之前的课没有讲到,因为编译器会自动一个bit一个bit这样的copy,复数只有实部和虚部,没有指针,所以默认的够用。但string类的包含有指针,编译器默认的则不够用,默认的话,拷贝的对象和原对象,它们的指针会指向相同的地址,这不是我们想要的结果。,默认指针为空指针,初始化时,若未指定值,则给*m_data一个结束符号,

2024-03-08 10:46:34 352 1

原创 Unity-Animation&Animator

老动画系统主要用于处理老版本项目和简单的一些自制动画新项目都不建议大家使用了关键组件:Animation。

2024-03-07 17:17:22 2537 1

原创 Lua语法

打印注释。

2024-03-02 17:49:29 720 1

原创 AssetBundle基础

为了重载,且重载过程中有重复代码,因此修改,添加LoadAB用来加载资源包。2.官方提供好的打包工具:Asset Bundle Browser。3.AssetBundleBrowser参数相关。因为他不知道单个包依赖谁(看的PC主包的信息)1.Unity编辑器开发,自定义打包工具。打包的脚本 是关联的数据而不是C#代码。C# 不能被打包 所以要lua。则加载a 依然会加载 3,4。a包和 1,2包产生依赖。但存在b包 依赖 3,4。打包不同平台要重新打包。4.AB包生成的文件。

2024-02-29 08:55:40 507

原创 Unity 单例模式基类模块

但仍然有缺点:切场景时挂载脚本的物体没了,因此要改进。多线程状态下要加上双锁。

2024-02-28 22:59:57 383 1

原创 Unity GUI实践小项目

修改CustomGUIControl为抽象类,同时虚方法改为抽象方法。(父类不直接调用)自定义文本挂载到对象上后,可以设置为预设体prefab自定义按钮//提供给外部 用于响应 按钮点击的事件 只要在外部给予响应函数 就会执行//?调用 它会判断这个是否为空,空的就不会调用clickEvent?.Invoke();clickEvent?.Invoke();//一直调用太浪费性能,因此用这个判断有无变化= isSel)= isSel)return;

2024-02-25 21:06:02 449

原创 UnityUI系统 - GUI

region 知识点一 全局颜色//全局的着色颜色 影响背景和文本//按钮是偏红,字体全红//文本着色颜色 会和全局颜色相乘//背景元素着色 会和全局颜色相乘GUI.Button(new Rect(0, 0, 100, 30), "测试按钮");GUI.Label(new Rect(0, 50, 100, 30), "测试按钮");//style 自定义后也会被全局改变,改回白色可以变回去。

2024-02-24 21:10:10 1007

原创 PlayerPrefs实践小项目

补充PlayerInfoList继承IList,且IList不是泛型类型,因此可以使用父类装子类只需要补充SaveValue方法//如何判断 泛型类的类型//通过反射 判断 父子关系//相当于判断 字段是不是IList子类Debug.Log("存储List" + keyName);//父类装子类//先存储 数量//存储具体的值++index;定义自定义类ItemInfo补充PlayerInfo补充LoadValueelse。

2024-02-19 18:03:05 403 2

原创 C# 反射

程序运行时,通过反射可以得到其它程序集或自己程序集代码的各种信息 如 类、函数、变量等,实例化它们,执行它们,操作他们。使用Type的成员获取有关类型声明的信息,有关类型的成员(如构造函数,方法,字段,属性和类的事件)有关程序以及类型的数据 被称为元数据,它们保存在程序集中。主要用来加载其他程序集,加载后才能用Type来使用其他程序集中的信息。一个运行的程序查看本身或其它程序的元数据的行为就叫做反射。如:程序中的类,类中的函数、变量是程序的元数据。程序运行时,可以查看其他程序集或自身的元数据。

2024-02-08 23:58:28 356

原创 数据持久化PlayerPrefs

PlayerPrefs 存储在 HKCU\Software\[公司名称]\[产品名称] 项下的注册表中。数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。/data/data/包名/shared_prefs/pkg-name.xml。PlayerPrefs中不同数据的唯一性有Key决定,不同key决定不同的数据。PlayerPrefs的数据存储 类似于键值对存储 一个键对应一个值。是Unity提供的可以用于存储读取玩家数据的公共类。运行 regedit。

2024-02-08 19:32:27 422

原创 唐老狮Unity入门笔记

1. Inspector窗口中的变量关联的就是对象的成员变量,运行时改变他们就是在改变成员变量。2.拖拽到GameObject对象后,再改变脚本中变量默认值,界面上不会改变。3.运行中修改的信息不会保存(可以copy后paste)让自定义类型可以显示编辑。大部分类型都能显示编辑。

2024-01-28 19:52:20 785

空空如也

空空如也

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

TA关注的人

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