- 博客(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
原创 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
原创 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<=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 > Button.Step 2 : 创建一个脚本 TestClick.cs, 定义了一个 Click 的 public 方法.Step 3 ...
2018-06-24 09:52:32
2153
1
原创 C# 反射机制和作用
第一件事就是:反射很慢,消耗性能。反射:可以通过程序集,类型,类型实例获取该程序集内【所有类型+类型所有字段+类型字段的类型,方法,方法的访问类型,参数和返回值等等。。。】作用<1> 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<string> #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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人