自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 int[][]和Int[,]的行和列

1.int[][]是嵌套数组,即数组的数组,只能算是一维数组,可以理解为一维数组的值为数组,且长度不必统一。 int[][] a=new int[][] { new int[3] {0,0,0 }, new int[4]{1,1,1,4 } };如上数组,数组长度为2,仅包含两个元素 new int[3] {0,0,0 },new int[4]{1,1,1,4 }a[0].Length=3a[1].Length=42...

2020-12-22 09:29:14 4831

原创 基于可变数组的Stack栈

using System;using UnityEngine;/// <summary>/// 栈/// </summary>public class MyStack<T>{ /// <summary> /// 栈的实现还是使用数组的方式存储 /// </summary> public T[] content { get; set; } public int Count { g...

2020-12-02 10:53:20 169

原创 Unity Rect.OverLaps(Rect other) 改进

改进原因:Scale缩放后该内置函数判断有误。public static class Tools{ public static Rect GetRect(this RectTransform self) { float width = Mathf.Abs(self.sizeDelta.x * self.localScale.x); float height = Mathf.Abs(self.sizeDelta.y * self.localScale....

2020-09-18 14:25:20 1645

原创 Unity UI中心扩散Shader

// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)图片 wrap mode 格式选择ClampShader "ACME/CircleExpand"{ Properties { [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} _...

2020-08-25 09:17:57 2001 1

原创 合并两个数组,并重复

思路1 :Hashset,或者Dictionary<> List<int> Merge(List<int> list1, List<int> list2) { HashSet<int> set = new HashSet<int>(); for (int i = 0; i < list1.Count; i++) { set.Add(list1...

2020-06-17 22:31:25 399

原创 合并两个有序数组,并去重

void Start () { List<int> a = new List<int> { 1, 3,3, 5,6, 7 }; List<int> b = new List<int> { 2, 3,4, 6, 8 }; List<int> result = Merge(a, b); if (result != null) for (int i = 0; i &l...

2020-06-17 21:56:43 1608

原创 单例模式

只生成一个对象 不允许外部生成lazy load 延迟加载线程安全 上锁访问效率 实例化的时候才上锁

2020-05-12 13:01:39 109

原创 C# Base64加密解密 Unity3D环境应用

string base64 = Convert.ToBase64String(byte[] bytes); //加密byte[] bytes =Convert.FromBase64String(string Base64); //解密Unity环境应用/// <summary> /// 将图片数据转换为Base64字符串 /// </sum...

2020-04-14 16:01:34 703

原创 UDP通信

发送消息socket.SendTo(sendData, sendData.Length, SocketFlags.None, remoteEndPoint);只需要知道remoteEndPoint的作为目标地址就可以了,socket甚至不需要绑定IP接收消息EndPoint remote = new IPEndPoint(IPAddress.Any,0); /...

2020-04-01 15:59:24 319

原创 编程 入坑指南(一)

一、字节和字符串转化过程中,不等价关系byte[] buffer1;buffer2string msg;buffer1转msg,msg转buffer2,【转换过程中使用相同的编码格式】buffer2!=buffer1什么原因呢?...

2020-04-01 14:51:14 145

原创 光照模型概要

1)BRDF ->基于物理的BRDF:给定入射光线和辐照度,用一种函数计算某出射方向的能量2)标准光照模型(Phong光照模型)-裴祥风 -只关心直接光照,即光线经一次反射进入相机高光=光线颜色*高光颜色*Pow(Max(0,视角向量*反射向量),gloss反光度)3)Blinn-Phong光照模型 -高光计算避免计算反射方向R,引入H——是V和L的归一化后的向量的和向量,再归一化得到...

2019-10-21 17:59:55 228

转载 Unity加载外部图片效率提高百倍以上的方法

前一段在做一个功能的时候必须加载外部多张连续的图片,来实现一个简单的小动画。本来是一个非常简单的功能,不用两分钟就写好了。但是最终打成apk测试的时候有个非常大的问题就是非常卡,图片播放卡的简直不忍直视,后来去看unity的官方文档,发现了一个非常好用的方法。我们在使用unity的UGUI中的图片的时候,绝大多数人都是使用Image这个组件,而大家基本上很容易忽略掉这个组件的使用效率问题,因为都...

2019-07-03 14:23:56 1322

原创 接口和抽象类有什么区别?

你选择使用接口和抽象类的依据是什么?接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类是什么:抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了子类的随意性。(1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法...

2019-06-28 11:39:35 28702 4

原创 热更流程

2019-06-06 17:53:06 284

原创 A-Star 寻路算法 伪代码

G-到起始点距离H-到目标点距离F=G+H

2019-05-28 18:09:31 1774

原创 C# FileSystemWatcher监听文件事件

监控某个目录中的文件修改,创建,删除注意:如果是Unity3D,不要把监听路径设置为Asset内部using System;using System.Collections;using System.Collections.Generic;using System.IO;using System.Text;using UnityEngine;public class Fil...

2019-05-08 13:22:35 1699 1

转载 协程

协程:协同程序(coroutine).,即协作式程序,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协成处于休眠状态。协程实际上是在一个线程中,只不过每个协程对CPU进行分时,协程可以访问和使用unity的所有方法和component。    同一时间只能执行某个协程,协程适合对某个任务进行分时处理。    控制代码在特定的时间执行。    协程不是线程,也不是异步执行,跟Up...

2018-07-14 19:05:34 217

原创 1-9这9个不重复数字,划分成三个3位数 i j k,使得i : j : k=1:2:3

本题主要考察逻辑分析能力和耐心,一般能会粗暴的使用枚举法,即3个关于i,j,k的for循环一个个判断。1)数字不重复,i最小数字是123,k最大数字是987,i*3&lt;=987,即i最大数字329  ,需要循环329-123=206次2)当i=num, j=2num,k=3num,判断123456789是否都用到了。 void Start () {        int i, j, k, x;...

2018-06-28 21:11:35 2215

转载 Unity UGUI 绑定事件的 4 种方式

UGUI 可视化创建以及关联事件很方便, 动态创建可以利用创建好的 Prefab 进行实例化, 只是在关联事件上有些复杂, 本文总结了几种给按钮绑定事件的关联方式.1. 可视化创建及事件绑定 #Step 1 : 通过 Hierarchy 面板创建 UI &gt; Button.Step 2 : 创建一个脚本 TestClick.cs, 定义了一个 Click 的 public 方法.Step 3 ...

2018-06-24 09:52:32 2153 1

原创 物理系统与碰撞器,触发器

2018-06-22 14:00:59 226

原创 C# 反射机制和作用

第一件事就是:反射很慢,消耗性能。反射:可以通过程序集,类型,类型实例获取该程序集内【所有类型+类型所有字段+类型字段的类型,方法,方法的访问类型,参数和返回值等等。。。】作用&lt;1&gt; Json或XML解析,用于实例化一个class类,当然需要该class类和jsondata或XML data的内容相匹配。评价:很鸡肋的用法——如果你很懒,不想写反射机制的相关代码,完全可以用JsonMa...

2018-06-21 23:41:49 3757

转载 LightMap 没有CPU硬件加速,减少烘焙时间

Unite 2018 | Lightmap烘焙最佳实践柳振东 Unity官方平台 昨天从Unity 5.0版本我们推出了Enlighten烘焙系统,在Unity 5.6版本开始增加了Progressive烘焙系统作为备选,但是直到Unity 2018.1正式版本才脱离Preview状态。现在国内大部分开发者主要都使用Enlighten系统进行Lightmap烘焙。作为Progressive系统极大...

2018-06-19 12:03:42 1976

原创 C++ :用GetLastError()查找错误原因;

DWORD error = GetLastError(); 错误对照码功能:查询LoadIcon()函数返回的错误值  〖0〗-操作成功完成。  〖1〗-功能错误。  〖2〗-系统找不到指定的文件。  〖3〗-系统找不到指定的路径。  〖4〗-系统无法打开文件。  〖5〗-拒绝访问。  〖6〗-句柄无效。  〖7〗-存储控制块被损坏。  〖8〗-存储空间不足,无法处理此命令。  〖9〗-存储控制块...

2018-03-16 17:21:47 3920

原创 32位系统的虚拟内存空间最大容量

表示32位系统的内存地址有32位,即4字节(表示64位系统的内存地址有64bit,即8字节)pow(2,32) bitpow(2,32)/8 Bpow(2,32)/8/1024 KBpow(2,32)/8/1024/1024 Mpow(2,32)/8/1024/1024/1024 = 0.5G最后一行即:pow(2,32)bit=0.5G,为什么别人说32位系统内存最大是4G?有...

2018-03-05 10:52:19 11278 4

原创 C++ 如何把C风格字符串转化为数字

#include "stdafx.h"#include&lt;string&gt; #include "iostream"using namespace std;double ToNumber(const char* charArray){ double Value = 0; bool isNegative = false; bool isFloat = false; int floatCount...

2018-02-12 16:13:14 338

原创 C++ 中函数和const关键字

#include  using   namespace   std;class   A{int   data;public:int value1 = 10;const int value2  = 20;  A(int   da = 18) :data(da) {}void   display1() { cout void   displa

2018-01-13 19:12:07 664

转载 assert()函数用法总结

assert()函数用法总结  assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression );  assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终

2018-01-13 15:48:36 202

原创 #define 宏函数,为什么能够提高性能?

#define S(a,b) a*b //正确的宏定义是#define S(r) ((r)*(r)) area=S(3,2);第一步被换为area=a*b; ,第二步被换为area=3*2; 类似于函数调用,有一个哑实结合的过程: 预处理(预编译)工作也叫做宏展开:在编译之前,就将宏名替换为字符串。 优点:宏 ——1)代码在预处理期被简单文本替换, 类似于

2018-01-13 15:08:09 5080 1

转载 Unity将来时:IL2CPP怎么用?

版本准备前文详细的介绍了IL2CPP的来龙去脉,这里用一个实际的例子来看看Unity3D里的IL2CPP都为我们做了哪些工作以及在使用的过程中会遇到哪些问题。IL2CPP应用的第一个平台是WebGL,为了让游戏可以一键部署到基于WebGL的浏览器中,Unity3D Script工作组的大牛们找到了一个绝妙的解决方案:不仅解决了C#,Unity Script语言兼容问题,还解决了客户

2018-01-12 17:39:34 5437

转载 Unity将来时:IL2CPP是什么?

Unity将来时:IL2CPP是什么?小玉3 年前作者:@Xu BowieUnity3D 想必大家都不陌生,独立游戏制作者们很多人都在用它,甚至一些大公司也用在很商业的游戏制作上。Unity3D最大的一个特点是一次制作,多平台部署,而 这一核心功能是靠Mono实现的。可以说Mono是Unity3D核心的核心,是Unity3D跨平台的根本。但是在2014年年中的时 候

2018-01-12 17:37:51 742

转载 C++ 移动构造与移动赋值运算符

转载自:http://blog.csdn.net/cloud323/article/details/70570463一,左值与右值1,左值与左值引用左值是一个表示数据的表达式,程序可以获取其地址。左值可以出现在赋值语句的左边,也可以出现在赋值语句的右边。左值引用就是对左值的引用。下面的变量都是左值[cpp] view plai

2018-01-12 14:33:00 1585

原创 C++复制构造函数&移动构造函数,复制赋值运算符&移动赋值运算符

一、调用时机1、复制构造函数调用的时机·对象在创建时使用其他的对象初始化Person p(q); //此时复制构造函数被用来创建实例pPerson p = q; //此时复制构造函数被用来在定义实例p时初始化preturn_p()  //当函数返回该类型的对象时调用·对象作为函数的参数进行值传递时f(p); //此时p作为函数的参数进行值传递,p入栈

2018-01-11 20:50:20 1027

转载 自由存储区和堆的区别。

“free store” VS “heap”当我问你C++的内存布局时,你大概会回答:“在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。如果我接着问你自由存储区与堆有什么区别,你或许这样回答:“malloc在堆上分配的内存块,使用free释放内存,而new所申请的内存则是在自由存储区上,使用delete来释放。”

2018-01-07 21:05:58 2665

原创 排序算法4)快速排序

——《SIKI学院》——快速排序思想----分治法,它采用了一种分治的策略,通常称其为分治法。快排是划分交换排序。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。以一个数组作为示例,取区间第一个数为基准数。

2018-01-06 19:14:14 177

原创 排序算法3)简单选择排序

简单选择排序(Simple Select Sort)算法的基本思想是:从待排序的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第一个记录交换位置;然后从不包括第一个位置上的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第二个记录交换位置;如此重复,直到序列中只剩下一个记录为止。     static void SelectSort(int[] dat

2018-01-06 18:56:14 378

原创 排序算法2)冒泡排序

冒泡排序(Bubble Sort)的基本思想是:将相邻的记录的关键码进行比较,若前面记录的关键码大于后面记录的关键码,则将它们交换,否则不交换。第1趟结束,最小值在首尾第2趟结束,第二大值在第二个位置第3趟结束,第三大值在第三个位置...

2018-01-06 18:44:54 201

原创 排序算法之1)直接插入排序

static void InsertSort(int[] dataArray)        {            for (int i = 1; i             {                int iValue = dataArray[i];                bool isInsert = false;                /

2018-01-06 18:37:15 182

原创 C++显式调用DLL

#pragma once#include#include "Vector3.h"#include "Quat.h"#include using namespace std;1.定义dll中函数原型typedef bool(*pCMHumanExtern)(char* address, uint32_t channel, uint64_t frameCount, do

2018-01-03 11:54:18 715

原创 常用数据类型和取值范围

数据类型                       字节                       二进制位                       取值范围                    .............................................................................................

2017-12-28 15:57:24 481

原创 Unity 的局部坐标转换到世界坐标的接口

Transform.TransformDirection ( localPos ) ;

2017-12-06 16:11:50 2146

Unity 相机控制脚本——鼠标左中右三键控制相机阅览场景

鼠标左中右三键控制相机阅览场景

2017-11-28

空空如也

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

TA关注的人

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