自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lua 匿名函数、可变参数、select妙用

注:也可以将t或者s存到params中,比如。

2023-03-17 18:01:57 676

原创 强引用、软引用、弱引用

强引用、软引用、弱引用、虚引用的含义

2022-10-25 22:57:16 299

原创 Lua 元方法__name与__tostring

当调用tostring方法,或使用print打印一个对象时(print函数总会调用tostring方法来格式化输出,其实还是调用tostring方法),如果有__tostring键,则执行__tostring键对应的方法,如果没有则看有没有__name键,返回__name键对应的字符串,修改表的输出逻辑。

2022-10-24 20:17:52 1335

原创 Lua __metatable键

__metatable可以保护一个表让用户看不到和不能修改它的元表,被使用__metatable保护元表的原表不能再修改元表,否则会报错

2022-06-27 21:03:15 455

原创 UE4拖拽物品的实现

一、 Input事件列表看了Input事件列表、本以为用OnDrag和OnDrop两个事件就能完成二、准备UMG蓝图创建目标蓝图ItemSlot,待拖动的Item,里面只有一张图片创建移动中显示的蓝图ItemSlotDraging,相较于ItemSlot多了个Text标识用于区别显示创建目标Item蓝图载体,或者称为背景蓝图三、编写代码逻辑过程中共使用了三个输入事件OnMouseButtonDown、OnDragDetected、OnDrop打开关卡蓝图,将UI蓝图渲染到屏

2021-11-30 22:33:20 5167 1

原创 Lua table操作(table.next, table.pack, table.unpack, table.move, pcall, xpcall)

1. table.next:原型next(table[,index])当没有传入index即index是nil时,返回的是table表中的第一个键值对当传入index时,返回的是指定index索引的下一个迭代键值对当传入的index为该表的最后一个索引时,返回nil所以当判断一个表是否为空表{}时可以用if(next(t) == nil),而不用再写for语句遍历元素来判断 local t = {} local s = nil local o = {"5"} if next(t) ==

2021-09-09 22:51:56 1050 1

原创 数据结构之堆 C#

前言堆(Heap)其实是一颗完全二叉树,分为大顶堆(大根堆/最大堆)和小顶堆(小根堆/最小堆)大顶堆与小顶堆任意一个节点的值都比它的左右子节点的值大(可以等于)的堆称为大顶堆,所以大顶堆的堆顶存放的是当前堆中最大的元素任意一个节点的值都比它的左右子节点的值小(可以等于)的堆称为小顶堆,多以小顶堆的堆顶存放的是当前堆中最小的元素堆与数组的映射用n表示堆中节点的总数量,把上图堆中的数据映射到数组中可得大顶堆:110,100,90,40,80,20,60,10,30,50,70110,100,90

2020-12-21 17:07:57 586

原创 C# 通过反射获取私有成员

获取反射的三种方式 Student stu = new Student(); Type type = typeof(Student); Type type = stu.GetType(); Type type = Type.GetType(); // 注意该方法有具体的使用规则BindingFlags用于限制获取成员的类型,不写的话只能查找到公共成员。一般BindingFlags.Instance与BindingFla

2020-12-16 17:44:23 2317 1

原创 数据结构之树

前言数据结构:数据在计算机上的存储、组织形式线性表:包含多个数据元素的有限序列,元素之间一般首尾相接,是一对一的线性关系,它包括顺序表和链表,常见的数据结构有:数组、栈、队列、链表等一、树由n个节点组成的、具有层次关系和树状结构性质的数据的集合,是一种非线性结构,是一对多的关系,可以通过家族中的族谱来辅助理解,一个节点可以有n个子节点但是子节点(根节点除外)却有且仅有一个父节点节点的度:节点的分支个数/子节点个数(节点的直接孩子的个数,不包括孙子…),如图节点1的度是3树的度:树中所有节点的

2020-11-27 15:05:13 165

原创 自动在脚本头部添加开发信息

效果图制作在Editor目录下新建脚本,我这里取名为ScriptHeadCommentusing System;using System.Collections;using System.Collections.Generic;using System.IO;using UnityEditor;using UnityEngine;public class ScriptHeadComment : UnityEditor.AssetModificationProcessor{ p

2020-11-12 20:25:18 334

原创 轻松理解event事件

事件模型的五个组成部分事件拥有者,事件发布者事件事件响应者,事件订阅者事件响应函数,事件处理函数订阅,注册event简单实例新建脚本EventTest2,将五个模型写在代码头部/// <summary>/// 事件拥有者,事件发布者/// 事件/// 事件响应者,事件订阅者/// 事件处理函数/// 订阅,注册/// </summary>public class EventTest2 : MonoBehaviour{ void Star

2020-11-09 19:55:05 248

原创 C# Struct的内存对齐

前言内存对齐的方式有三种,测试需要引用命名空间using System.Runtime.InteropServices;namespace System.Runtime.InteropServices{ [ComVisible(true)] public enum LayoutKind { Sequential = 0, Explicit = 2, Auto = 3 }}一、LayoutKind.Sequential

2020-10-13 16:02:59 2167

原创 Ref Out修饰值类型与引用类型以及值传递与引用传递

前言之前了解的都是Ref、Out修饰值类型的情况,今天来重点研究就一下Ref、Out修饰引用类型的情况值类型与引用类型C#数据类型分为两大类:值类型与引用类型值类型:int、float、double、char、bool、struc等,存储在栈上,垃圾由系统自动回收,不经过GC引用类型:string、数组、类、接口等,引用存储在栈上,具体的数据存储在托管堆上。垃圾回收由GC控制,垃圾回收的规则参见Ref与Out修饰值类型参数值类型的参数本来是值传递,加上Ref、Out之后相当于将引用传递了过去,

2020-09-27 18:51:23 614 1

原创 Monobehavior生命周期一探究竟

前言Monobehavior生命周期函数表网上都有,这里只研究经常遇到的,重点关注FixedUpdate、Update、LateUpdate与OnGUIpublic class MonoLifeTest : MonoBehaviour{ private void Awake() // 最先调用,只调用一次,只依赖于脚本所附属的物体,与脚本的激活状态无关,也就是说只要所属物体是激活的,无论脚本是否处于激活状态都会调用 { Debug.LogError("Awake");

2020-09-22 21:26:08 1214

原创 SVN中的回退操作

今天来研究一下svn中的版本回退操作,以270版本举例1. Update item to revision执行操作后会回退掉271 ~ 276版本的更改,使本地的代码为270版本的代码,相当于270版本之后的代码本地还没有更新的状态,更新了就会回来。该操作主要用于测试看270版本代码的表现是否正确,如果正确就将问题代码锁定在271 ~ 276之间。可以看到执行操作后,当前工程的版本在270,此时Commit也为空,虽然本地代码与服务器代码不同,但因为是版本较旧造成的,所以不能提交更新了就回来了

2020-09-18 16:45:04 17029 1

原创 数据结构之哈希表:C# Dictionary的实现原理

一、全局变量: // 字典中数据的基本存储单元、条目,可以认为是一个链表的结点 private struct Entry { public int hashCode; // 哈希码,Lower 31 bits of hash code, -1 if unused public int next; // 同一个槽位上,下一个链表结点在entries数组中对应的索引,Index of next entry, -1 if la

2020-08-04 16:58:54 2444

原创 数据结构之链表

线性表: ####包含多个数据元素的有限序列顺序存储结构:用一段在内存中连续的地址单元来存储数据,顺序表,内部采用数组实现,需要事先知道数据的长度链式存储结构:用一段在内存中可连续可不连续的地址单元来存储数据,链表,...

2020-04-28 22:12:50 220

原创 排序算法

(一)冒泡排序原理: 相邻两元素进行两两比较,将值大元素放在后面,每趟排序都能获得一个当前剩余元素的最大值。所以比较n-1次即可排序完成。时间复杂度: O(n²),比较n-1趟每趟比较n-i个元素 (n-1)(n-i);最优时为顺序即已经排好了,只比较n-1次所以最优时间复杂度为O(n),如果不知道是否排序完成则仍为O(n²);最坏时为逆序3(n-1)(n-i),多了交换代码产生的时间仍为O(...

2020-04-27 15:14:45 336

原创 Stencil在Unity中的使用

Stencil用于在渲染时保留和抛弃像素Stencil对应的材质组件在Unity中的显示如图:Ref ReferenceValue对应组件中的Stencil ID由程序自己设定,用于和缓冲(Stencil Buffer)中的值相比较,比较的方式在Stencil Comparison中设定,满足条件则渲染出来(保留)。Stencil Comparison渲染时判断是否保留的条件。将r...

2020-01-03 16:12:04 9966

原创 继承MonoBehaviour的单例

以懒汉式为例:正常单例public class GameCtrl{ #region 正常单例 private GameCtrl() { Debug.Log("GameCtrl"); } private static GameCtrl m_Instance = null; public static GameCtrl In...

2019-07-23 10:53:36 481

原创 Unity 自定义脚本模板

找到模板C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates修改模板将自己想要自定义模板的原版复制一个副本,并自定义名称80:序号;Tmz Script:一级列表中的名称;NewTmzScript:新建出来脚本的名称修改自己想要的模板内容保存模板保存模板,并 重启Unity...

2019-05-20 11:54:40 1906

原创 DateTime相关API

void Start () { m_DateTime = DateTime.Now; Debug.Log("Ticks:" + m_DateTime.Ticks); // 当前时刻的时间戳 Debug.Log("Millisecond:" + m_DateTime.Millisecond); // 当前秒中的第多少毫秒 Debug.L...

2019-04-15 16:53:22 491

原创 RectTransform中localPosition与anchoredPosition的区别

1. Inspector面板中Transform的位置信息显示的是localPosition2. Inspector面板中RectTransform的位置信息显示的是anchoredPosition3D2.1 localPosition表示的是子物体的pivot相对于父物体的pivot的坐标2.2 anchoredPosition3D表示的是子物体的pivot相对于anchor的坐标,当a...

2019-04-08 21:09:33 10949

原创 Unity平台判断

1. 在编译阶段就起作用 void Start() {#if UNITY_EDITOR Debug.Log("这是编辑器模式。。。");#endif#if UNITY_ANDROID Debug.Log("这是安卓平台。。。");#endif#if UNITY_IPHONE Debug.Log("这是iPhone平台。。。"); ...

2019-04-06 17:45:11 3268

原创 string.Format()

利用string.Format()可以比较简单地实现一些特殊格式的输出,比如:static void Main(string[] args) { Console.WriteLine(string.Format("{0:C3}", 0.2)); // 格式化货币,中文系统人民币,英文系统美元,默认保留2位小数,后面四舍五入 Conso...

2019-03-29 17:31:46 790

原创 可空类型修饰符与空合并运算符

可以让一个值类型赋值为null,例如给一个struct赋值为null或判断一个struct是否被赋过值if(m_TestStruct != null) { }"?"单问号:声明该值类型为可空类型,如:声明一个可空类型有以下三种方式: int? a = null; int? b = new int?(); Nullab...

2019-03-27 21:10:32 370

原创 设计模式

外观模式整合所有的子系统的接口和功能,并提供高级接口供客户端使用。从原来的需要操作多个子系统的情况,改为只需要面对一个整合后的类的情况。优点:将复杂的子系统沟通交给单一的一个类负责,并隔离了客户端与子系统的接触,除了能减少耦合度之外也更安全。缺点:将所有子系统集中在Facade接口类中,最终会导致Facade接口类过于庞大而难以维护。单例模式...

2019-03-27 16:55:58 119

原创 具名参数

当我们在调用参数很多的且具有可选参数的方法时就可以用到具名参数,比如:有一个方法 public class ParameterClass { public void TestFunc(int a, bool b = false, string c = null, int d = 0, int e = 0) { ...

2019-03-19 20:02:40 1141

原创 VS快捷键(需要安装VA)

Shift+Alt+Q:实现方法与接口(倒三角的功能)Ctrl+Shift+Enter:方法参数提示Alt+Enter:快速操作(黄色灯泡的功能)(需要工具-选项-环境-键盘搜索快速操作并设置)Shift+Alt+O:在工程中查找类Shift+F12:查找所有引用Ctrl+Shift+L:删除该行Ctrl+K,C:注释Ctrl+K,U:取消注释Ctrl+K,D:格式化代码Ctr...

2019-03-15 16:56:03 394

原创 VS用C#创建dll文件并读取

生成1:文件,新建,项目,选择控制台应用程序并命名确定2:编写C#代码如下(注意类的访问修饰符要手动修改为public)3:工程,属性,输出类型更改为类库保存4:选中工程右键重新生成即可看到成功生成的dll文件使用1:文件,新建,项目,新建控制台运行程序测试2:添加引用,将dll文件添加进来,可展开引用查看是否添加成功3:然后编写测试代码(记得引用命名空间),Conso...

2019-03-05 21:33:02 1611

原创 Unity GC

GC(Garbage collection)就是让内存重新可被使用的过程。栈内存中的数据一旦超出作用域就会被立即释放不会引发GC,堆内存中的数据超出作用域不会被立即释放,只能通过GC进行释放。当一个存放在堆中的变量被创建时,会经历一下步骤:1:Unity首先检查堆中是否有足够的闲置内存,如果有则立即分配2:如果没有足够的闲置内存,Unity就会触发GC释放掉一部分垃圾内存(过程可能很慢),如...

2019-02-27 15:25:45 2328

原创 Unity的四种坐标系

World Space(世界坐标):transform.position可以获得世界坐标Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。注:鼠标位置Input.mousePosition坐标属于屏幕坐标,在转成世界坐标时z轴的值不能为0,否则转为世界坐标时不...

2018-11-07 14:59:03 217

原创 Unity笔记

Input.GetMouseButtonDown(0)只在鼠标按下时刻作用Vector3类型不能直接与double类型相乘,但可与float相乘小球速度过快导致直接穿过墙体可以设置小球刚体组件中的Collision Detection模式为Continuous/ContinuousDynamic就可避免Mathf.Clamp(a,min,max);让a的取值在min和max之间Unity...

2018-11-07 14:54:47 378

原创 TouchPhase

// 手指刚触摸到屏幕时必触发1次 Input.GetTouch(0).phase == TouchPhase.Began; // 手指在屏幕滑动时触发多次 Input.GetTouch(0).phase == TouchPhase.Moved; // 手指长按屏幕触发多次 Input.GetTouch(0)...

2018-11-07 14:45:22 5022

原创 Unity Tips

1, 随意移动模型预览视窗:在Project界面里面选中模型,在Inspector界面上会显示模型的预览视图,右击视图的上的双横条,模型预览视图就会跳出来,此时就可以像Scene,Game等视窗一样任意移动,放在你想放的地方,如果想让它变回去,只要关掉它即可。2, 搜寻当前场景中哪些物件运用了指定脚本:在Hierarchy界面中的搜索栏中输入你想要搜索的脚本全名,即可找到哪些物件用了这个脚本,此...

2018-11-06 21:07:48 170

原创 Java知识点

子类的构造函数中必须调用父类的构造函数在一个类中,函数名相同,参数不同是overload重载,在两个类中父子关系,函数名参数完全相同是override复写override(复写、重写)应用(子类复写父类):[1]在具有父子关系的两个类中,[2]父类与子类有两个除方法体外完全相同的函数(返回值类型、函数明和参数列表相同)用this.()调用构造函数时必须是构造函数中的第一个语句构造方法不需...

2018-11-06 20:55:38 83

原创 Android知识点

view是所有控件的父类距离单位px像素、长宽度用dp、字体用sp、控件外间距与内间距设置日期:datePicker.updateDate( , , );生命周期函数成对儿handler的sendMessage()方法无论是在主线程还是在workerThread当中发送都是可以的mainthread用于UI,与用户交互,接收用户输入反馈;workerthread用于一些耗时较长的工作、...

2018-11-06 20:48:39 89

原创 AndroidStudio快捷键

AndroidStudio快捷键win版Ctrl+Space 代码提示Ctrl+Shift+ Space 自动补全代码Alt+Enter 导包,自动修正Ctrl+Alt+L 自动格式代码Ctrl+Y 删除行Ctrl(+Shift)+/ 注释掉代码Ctrl+Shift+ Up/Down 移动代码Ctrl+P 方法参数提示Ctrl+J 自动代码Ctrl+F 查找文本Ctrl+...

2018-11-06 20:39:21 124

原创 算法与数据结构目录

算法查找排序递归复杂度数据结构数组字符串链表栈队列树图哈希堆

2018-11-06 20:32:52 267

原创 计算机基础

面相对象五大原则:单一职责、开放封闭、里氏替换、接口分离、依赖倒置进程间通讯:管道、消息队列、信号量、信号、共享内存、套接字一台电脑只有一个ip、一个应用程序有多个端口TCP(Transmission Control Protocol)面向连接(三次握手)安全、可传大数据;UDP(User Datagram Protocol)无连接、不可靠、小数据^异或,相同为0相异为1稳定排序:冒泡...

2018-11-06 20:27:21 371

空空如也

空空如也

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

TA关注的人

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