自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 工厂模式、抽象工厂、简单工厂

设计模式之工厂模式、抽象工厂、简单工厂

2022-11-22 22:51:32 57

原创 Unity按钮事件的几种绑定方式

unity中的组件按钮

2022-11-21 20:24:11 326

原创 一些编程的基础

主要记录一些位运算规则,笔试的时候会用到。使用公式简单许多

2022-11-19 17:49:10 456

原创 类型的扩展方法

Unity引擎下C#的类型扩展方式

2022-11-10 20:30:07 370

原创 C#的一些知识点

学习C#需要知道的一些知识点。类是引用类型,结构体是值类型;结构体不支持继承,但可以实现接口;结构体中不能声明默认的构造函数。类的默认访问权限修饰符是 internal,类中成员的默认访问权限修饰符是 private;而结构体默认是Public

2022-10-18 15:54:01 131

转载 unity无法从Temp拷贝Assembly.dll到Asset

处理从Temp到Asset目录下dll拷贝出错

2022-09-06 20:10:20 76

原创 unity初级面试分享

何为闭包:闭包是指:在函数外部,可以读取函数中的成员,及我们所说的局部变量,

2022-08-10 17:46:54 585

原创 C++中四种类型转换

C++中的四种类型转换

2022-07-12 22:45:00 142

原创 哈夫曼树的一些理解与实现

哈夫曼树相关的几个名词路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1 。图 1 中从根结点到结点 c 的路径长度为 3。结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。例如,图 1 中结点 a 的权为 7,结点 b 的权为 5。结点的带权路径长度:指的是从根结点到该

2022-04-21 20:30:18 78

原创 两两数之和

题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。试例:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。class Solution {public: vecto

2022-04-19 20:39:00 31

转载 UGUI的Text文本字间距TextSpacing

最近写了一个前端界面,发现现有的Text文本与效果图中的间距不一样,不管是调大小,空格,在想,有没有像Android那样修改字体间间隔的。通过分析Text显示的原理,写一份组件修改字间距。原理都是一致的。判断整个自己的索引点,修改点之间的距离即可。原文:字体之间的间隔距离sing System.Collections.Generic;using UnityEngine;using UnityEngine.UI;[AddComponentMenu("UI/Effects/TextSpacing"

2022-04-08 19:47:19 207

转载 C#基础总结

C#是一款完全面向对象的语言,具有安全性。与C++有相似之处,也有不同之处。在此只讲不同。在C#中,返回值可以有多个,其得益于Out和ref。这其两个是区别以及用法如下:区别1、使用ref型参数时,传入的参数必须先被初始化,对out而言,必须在方法中对其完成初始化。2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字,以满足匹配。3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。4、ref传进去的参数在函数内部可

2022-04-07 18:39:18 18

原创 扣血抖动和FPS显示

一、扣血抖动打斗的时候,当受到伤害时,为了使游戏更加真实,会使主角抖动;但这只是让玩家看起来的,其实只需要抖动窗口即可实现。其原理是摄像机窗口,既屏幕视口。using System.Collections;using System.Collections.Generic;using UnityEngine;public class ShakeCamera : MonoBehaviour{ public float ShakeLevel = 3f;//振动幅度 public

2022-04-06 20:58:23 2876

原创 GitHub怎么提交文件到别人的项目中

在GitHub中,是分布式的版本管理机制,你如果想提交或者访问别人的项目或者储存库第一个条件是,这个项目或者储存库是Public的,不然你是访问不到的。当妮想提交东西到别人的项目中,或者想别人可以提交东西到你的项目或者储存库中,需要做一下操作:仅需两步1,邀请合作人打开项目或者储存库,点击Setting点击Collaborators点击这里,添加邀请人一起合作开发项目在这输入添加人的ID即可,他的昵称第二步,被邀请人接受邀请如一下界面操作。或者点击这里,将复制的链接,发生给被

2022-04-02 22:01:52 565

原创 单例模式(模板类)C#

单例在我们开发过程使用的次数有许多,在一次项目中都需要写很多次,因为为了节省就计划写一个模板,只需要继承即可

2022-03-29 20:41:34 632

原创 对象池模板类(基类)和c#手动回收

一、对象池在一款游戏中,我们不止有一个对象池,为了方便对对象池的创建,由此写了一个模板类。当然,也可以实现全功能的对象池,不管什么类型都可以。在此就不在阐述了。在此模板类中,使用了委托,系统自带的委托函数,以及堆栈的使用。using System.Collections.Generic;using UnityEngine.Events;using UnityEngine;public class ObjectPool<T> where T : new(){//最好改为只读的

2022-03-24 17:22:01 4119

原创 unity检出安卓工程后报错

从unity中检出安卓工程在Android Studio中打开后,会出现Failed to notify project evaluation listener.报错1一开始我也摸不着头脑,后面查了许多资料后发现是当前使用的gradle版本和在build.gradle中的版本数不对。如下图,我使用的是6.8的版本,在gradle中对应的是4.0.0具体自己的版本对应的是多少,可以去查看gradle的API...

2022-02-18 17:00:42 2437

原创 Scroll Rect(滚动矩形)弹性

最近有用到这个Scroll Rect组件,在之前也用过几次,但是许久没有用了,有些东西忘了,在此记录下!里面的内容滑动有三种性质,在此记录弹性性质,其余两种作简单说明!不受限制既是对内容随意拖动,甚至会使内容不在矩形显示范围内---------一般不用这个性质夹紧Clamped强制将内容保持在Scroll Rect矩形中,切没有视觉效果,即拖动的时候到达边界就会立刻停止!弹性Elastic也是强制将内容保持在 Scroll Rect 的范围内,但是弹性模式在内容到达 Scroll Rect 的

2022-02-15 20:40:50 368

原创 Lua中的self与点号和冒号的使用

在lua编程当中,会自己实现许多函数,并且进行调用,在调用的时候,会触及点号" . “和冒号” : "他们两者的区别在于一个有自己的表self(冒号),一个没有(点号)。类似与C++中的类中有默认的this指针,而类外没有!直观的看代码吧!输出的结果是一样的点号Test = {length = 4}function Test.set_length(Test, length) Test.length = lengthendfunction Test.print_area(Test)

2021-12-20 17:30:14 423

原创 unity中创建的四种系统shader

仅为个人理解!勿喷1、Unlit Shader会产生一个不包含光照,但是包含雾效的基础顶点/片元着色器。2、Image Effect Shader实现各种屏幕后处理效果提供了一个基础模板,可在此模板上进行修改。3、Compute Shader会产生一种特殊的Shader文件,一般在利用GPU的并行性来进行一些与常规的渲染流水线无关的计算。一般在做渲染的时候,不会创建这类文件,当然,具情况而定!4、Standard Surface Shader有典型的表面着色器的实现方法。当然,我们在游戏当

2021-12-14 16:49:47 2329

原创 AI行为树理解

基于前面几次的面试,自己进行行了总结:在问道我项目里的怪物AI逻辑的时候,我自己项目里用的是状态机制,算是行为树的一层,但是复杂的行为树有很多很多层,比较能完成的实习NPC或者怪物行为。自己也在百度上找了许多资料,对此谈下我自己的理解! @TOC一级目录二级目录三级目录基础-Basics1、行为树的名字很好地解释了它是什么。不像有限状态机(Finite State Machine)或其他用于 AI 编程的系统,行为树是一棵用于控制 AI 决策行为的、包含了层级节点的树结构。树的最末端——叶子,

2021-12-01 20:07:47 917

原创 九大生命周期函数

Awake函数:一般脚本实例被创建时调用的触发用于游戏对象初始化,注意Awake函数是早于Start函数OnEnable触发时间:当对象变为可用或激活状态时被调用作用:事件监听Start触发时间:Update函数第一次运行前调用作用:用于游戏对象的初始化FixedUpdate触发时间:每隔固定物理时间间隔调用一次 ,可以通过修改物理帧数进行修改作用:用于物理状态的更新Update触发时间:每帧调用一次 作用:用于更新游戏场景和状态LateUpaate触发时间:每帧调用一次(

2021-10-28 00:35:40 265

原创 协程与线程

协程:协同程序。协程的使用前提:直接或间接的继承MonoBehavior才可以使用。不足:会产生外的开销。协程方法与普通方法的区别:被调用时:普通方法被调用时,原来执行的部分保留现场,停止执行,然后去执行要调用的方法,并且,被调用的方法执行完之后才能返回到调用前的状态接着往下执行。。。协同方法的执行是不用等协同方法执行完再执行调用之前原来方法的代码。 而是两者异步执行。为了方便理解,这里可以把原方法(调用普通方法和协同方法的方法设为main。 普通方法叫Function,协同方法叫Coroutin

2021-10-25 23:57:43 1202

原创 ab包打包

利用menuitem对编辑器进行扩展,便于操作、注意点,需要引用io,且存储的位置。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using System.IO;public class CreateAssetBundles{ [MenuItem("Asset/Build AssetBundles")]//设置为菜单选项 static

2021-10-23 11:53:40 30

原创 观察者模式

观察者模式适用于:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。一个对象的改变将导致其他一个或多个对象也发生改变,而不知道具体有多少对象将发生改变,可以降低对象之间的耦合度。一个对象必须通知其他对象,而并不知道这些对象是谁例子场景:多个观察对象(公司员工)同时监听一个主题对象(

2021-10-20 23:55:21 32

原创 lua实现单例模式

luaSingleton = {}function Singleton:new(o) o = o or {} setmetatable(o,self) self.__index = self return oendfunction Singleton:Instance() if self.instance == nil then self.instance = self:new() end return self.instan

2021-10-19 22:12:24 178 3

原创 里氏替换原则

一、里氏替换原则的定义1、里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。2、里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。3、里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。二、里氏替换原则包含的含义

2021-10-18 23:54:14 1407

原创 外观模式c++

外观模式的定义:为子系统中的一组接口(相当与上面的模块)提供一个一致的界面。此模式定义了一个高层接口,这个结口使得这一子系统更加easy使用。说白了就是:我们仅仅需调用高层的函数接口。而不用关心高层内部调用是怎样组合底层方法的。更不用关心底层函数是怎样实现的。应用实例:去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。优点:1、实现了子系统与客户端之间的松耦合关系。减少系统相互依赖、提高灵活性、提高了安全性。2、客户端屏蔽了子系统

2021-10-17 23:39:16 38

原创 单例模式c++

单例 Singleton 是设计模式的一种,其特点是只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例。#ifndef _INSTANCE_H_#define _INSTANCE_H_class Instance{private: Instance(){} ~Instance(){} Instance(const Instance& copy){} static Instance* m_pInstance;public: static Ins

2021-10-17 23:38:27 17

原创 c++与c#的区别

1、继承:C++支持多继承,C#类只能继承一个基类中的实现但可以实现多个接口。2、数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。3、数据类型:在C++中bool类可以与整型转换,但C#中bool 类型和其他类型(特别是 int)之间没有转换。long 类型:在 C# 中,long 数据类型为 64 位,而在 C++ 中为 32 位。4、struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。5

2021-10-14 17:13:31 3230

原创 UDP何TCP的区别以及进程间的通信

UDP与TCP1.基于连接与无连接2.TCP要求系统资源较多,UDP较少;3.UDP程序结构较简单4.流模式(TCP)与数据报模式(UDP);5.TCP保证数据正确性,UDP可能丢包6.TCP保证数据顺序,UDP不保证进程的通信1.管道管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2.FIFO:命名管道有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。3.消息队列消息队列是由消息的链表,存放在内核

2021-10-11 19:33:13 240

原创 用协程的输出10组计数(每组5次,每次1秒)

using System.Collections;using System.Collections.Generic;using UnityEngine;public class Work7_28 : MonoBehaviour { // Use this for initialization void Start () { StartCoroutine("Outthenumber"); } // Update is called once per fr

2021-10-11 11:43:30 91

原创 使用射线通过点击地面控制人物移动

一。设置标签using System.Collections;using System.Collections.Generic;using UnityEngine;public class Tags{ public const string ground = "Ground";}二、通过鼠标点击地面,获取目标位置,并让主角朝向目标位置using System.Collections;using System.Collections.Generic;using UnityEn

2021-10-11 11:36:24 96

原创 Partial关键字

Partial原文链接Partial是局部类型的意思。允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类局部类型适用于以下情况:(1) 类型特别大,不宜放在一个文件中实现。(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(3) 需要多人合作编写一个类。局部类型的限制(1) 局部类型只适用于类、接口、结构,不支持委托和枚举。(2) 同一个类型的各个部分必须都有修

2021-10-08 17:17:41 193

原创 重写strcpy,时间复杂度和空间复杂度

对代码进行了优化,减少if判断以及行数简单时间复杂度char*myStrcpy(char*to, const char*from){ assert((to != nullptr) && (from != nullptr)); char*addstr = to; while ((*to++ = *from++) != '\0'); return addstr;}时间复杂度:算法执行语句的次数空间复杂度:对一个算法在运行过程中临时占用存储空间的大小。...

2021-09-23 00:59:11 106

转载 数据结构的一些题目,链表

版权所有,转载请注明出处,谢谢!原文链接:https://blog.csdn.net/luckyxiaoqiang/article/details/7393134已知链表结点声明如下:struct ListNode{int m_nKey;ListNode * m_pNext;};1、求单链表中结点的个数//求单链表中结点的个数int numberNode(ListNode* node){ if (node=nullptr) { return; } int num = 0;

2021-09-18 20:36:54 47

原创 输入整型字符串,输出该整数;如:输入“345”,输出345;

通过ASCLL码,字符的相减实现。不过在之前需要判断空字符,以及正负号问题。int atoi1(const char* str){ int num = 0, flag = 1; while (' '==*str) { str++; } if ('+'==*str||'-'==*str) { if ('-'==*str) { flag = -1; } str++; } while (*str>='0'&&*str<='9') {

2021-09-17 16:56:56 244

原创 输入一个整型数组,输出该数组的主要元素,如果不存在主要元素,则输出-1,找出好的算法,需要考虑时间和控件复杂度;

排序以及一些其他的可以封装为函数。#include<iostream>using namespace std;int main(){ int n = 0; cout << "请输入数组的大小" << endl; cin >> n; int *arry = new int[n]; cout << "输入数组的元素" << endl; for (int i = 0; i < n; i++) { cin &g

2021-09-17 16:33:07 71

原创 Cocos-2d怪物爆炸效果函数

1.由于需要实现怪物爆炸时的效果,考虑到每个怪物的图片引用不同,所有返回值为空下面是头文件的定义public://爆炸效果,参数:路径初始图片,添加到的位置,图片初始张,结束张加一,文件路径 void ExplosionEffect(const std::string& filename1, Sprite*sp, int starsum, int sum, const std::string& filename);下面需要到cpp文件中去实现Sprite*spBoom = Sp

2021-06-12 22:55:09 156

原创 Cocos2D-X摇杆

用到相似三角形,和两点间的距离公式。具体实现如下。头文件#ifndef _MONSTER_H_#define _MONSTER_H_#include"cocos2d.h"class Monster:public cocos2d::Sprite{public: //怪物移动 void monsterMove(); //碰撞 //初始化 //创建函数private: //怪物速度 float m_mspeed; //等级 short m_mLv; //伤害 short

2021-05-25 20:50:30 80

C#实现小型服务器与unity联通

现市面上比较新颖的服务器,可以加上客户端作为毕业项目。打开时使用的软件为VS2017,在软件内需要下扩展管理包log4net,点击上方菜单->工具->NuGet包管理器->管理解决方案的NuGet程序包。搜索log4net即可下载。

2022-03-24

空空如也

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

TA关注的人

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