- 博客(283)
- 收藏
- 关注
原创 表达式
左值(lvalue)和右值(rvalue)当一个对象被用作右值的时候,用的是对象的值(内容)当一个对象被用作左值的时候,用的是对象的身份(内存地址)左值变量返回左值的表达式有:赋值、下标、解引用、前置递增/递减运算符()的返回结果返回左值引用的函数的返回值右值字面常量、表达式求值过程中创建的临时对象。返回右值的表达式有:返回非引用类型的函数的返回值算数、关系、位、...
2022-11-05 11:31:52
229
原创 UGUI位置变换
ScreenPointVector3 screenPosition = mainCamera.WorldToScreenPoint(target.position);screenPosition的xy分量表示屏幕空间坐标,屏幕空间以像素为单位,左下角是(0,0),右上角是(pixelWidth,pixelHeight)z分量表示在mainCamera本地空间下的z分量,单位等同于默认的空间单...
2022-11-04 09:45:43
811
原创 头文件
为了能在多个文件中使用同一个类,要确保各个文件中类的定义一致。类通常被定义在头文件中,且头文件的文件名应该与类的名字一样。例如,库类型string在名为string.h的头文件中。头文件通常包含那些只能被定义一次的实体,比如类、const和constexpr变量等。头文件也经常需要用到其他头文件的功能,因此一般也会包含其他头文件。include#include 指示符读入指定文件的内容 它...
2022-10-31 02:28:20
336
原创 数组
数组的大小是确定不变的,不能随意向数组中增加元素。因为数组的大小固定,因此对某些特殊的应用来说,程序的运行时性能较好,但是相应地也损失了一些灵活性。数组是一种复合类型,数组的声明形如a[d],a是数组的名字,d(dimension)是数组的维度,表示数组中的元素的个数,且必须大于0。数组中的元素个数也属于数组类型的一部分,因此编译的时候维度应该是已知的,即维度必须是一个常量表达式。数组的元...
2022-10-30 06:53:59
184
原创 拷贝控制
当定义一个类时,可以显式或隐式地指定在此类型的对象的进行拷贝、移动、赋值、销毁时做什么,可以通过定义五种特殊的成员函数来控制这些操作:拷贝构造函数(copy constructor)拷贝赋值运算符(copy-assignment operator)移动构造函数(move constructor)移动赋值运算符(move-assignment operator)析构函数(destruct...
2022-10-30 06:53:52
107
原创 动态数组
new和delete运算符不止可以每次分配/释放一个对象,也可以针对数组。// 分配5个int长度的对象,然后返回指向第1个对象的指针int *piArray = new int[5];// 也可以用一个表示数组类型的类型别名来分配数组typedef int arrT[42];int *p = new arrT;// 编译器执行的形式如下int *p = new int[42];动...
2022-10-30 06:53:44
94
原创 实现3DUI
Screen Space - Camera将Canvas的Render Mode设置为Screen Space - Camera,然后将对应的camera设置为perspective透视投影。推荐使用该方案,需要有透视效果的UI才修改其旋转或到相机的距离,就能实现3D透视效果,且不会影响其他同Canvas的UI(z为0,在近平面上,也能受CanvasScaler影响而实现分辨率适配)Worl...
2022-10-30 06:53:31
216
原创 变量
初始值当对象在创建时获得了一个特定的值,我们就说这个对象被**初始化(initialized)**了。初始化不是赋值,初始化的含义是创建变量时赋予一个初始值,而赋值则是将对象的当前值擦除,并以一个新值来替代。默认初始化(default initialized)如果定义变量时没有指定初始值,则变量被默认初始化,此时变量被赋予了“默认值”。默认值规则如下:内置类型:由定义的位置决定函...
2022-10-30 06:50:49
69
原创 类
构造对象先被创建(分配了内存),然后才执行构造函数默认构造函数“默认”不是指默认的,而是指执行了默认初始化:对所有数据成员赋默认初始值默认构造函数没有任何参数。如果自定义类没有显式地定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数,称为合成默认构造函数(synthesized default constructor),它将按以下规则初始化类的数据成员如果该成员提供了一个类内...
2022-10-30 06:50:44
65
原创 自定义RectMask2D组件以支持四个方向的softness
用于设置自定义的softness的monobehavior脚本使用额外的脚本设置设置自定义softness参数,padding则仍需要用默认的RectMask2Dusing UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;namespace BorderlessFramework.Utility{ ...
2022-10-26 02:03:23
1130
原创 Mask
MaskRectMask2D旧版本(2019.4之前)的方式inline float UnityGet2DClipping (in float2 position, in float4 clipRect){ float2 inside = step(clipRect.xy, position.xy) * step(position.xy, clipRect.zw); ret...
2022-10-14 09:30:38
736
原创 CinemahineBrain的live camera为none
其live camera属性受该组件所在物体的camera组件的cullingmask影响,比如设置为UI,则只有layer设置为UI的VirtualCamera组件才会被CinemachineBrain所使用,如果场景中没有这样的VirtualCamera,则会显示CinemachineBrain的live camera为none...
2022-10-10 15:47:29
340
原创 半透明面片重叠部分颜色会叠加
Help plz! How do I make my character translucent in Unity? (esotericsoftware.com)helpplzHow to fade the edge of vertical. (esotericsoftware.com)Unity3D 에서 불투명한 스파인 리소스가 겹치는 문제 (esotericsoftware.com...
2022-09-28 08:49:54
738
原创 Criware视频插件播放带alpha通道的视频,会开启Zwrite
如果使用了CriManaMovieController而不是CriManaMovieControllerForUI,RendererResource会设置ZWrite为Off// RendererResource.csprotected void SetupStaticMaterialProperties(){ // 这里如果使用了CriManaMovieController,ui为...
2022-09-28 08:25:32
345
原创 视锥体
oblique frustum 倾斜视锥体一般视锥体都是对称的(一点透视到屏幕中心),如果想要实现类似横板街机游戏一样的”错误“的透视,可通过以下方式:开启Camera的Physics Camera,调节Lens shift等属性设置Camera.projectionMatrix 为自定义的投影矩阵Unity - Manual: Using an oblique frustum (u...
2022-09-28 08:24:10
587
原创 Bat批处理
系统目录::当前目录echo %~dp0变量set myVariable=abcecho %myVariable%For循环set outsideVariable=outside@setlocal enabledelayedexpansion::%%i表示迭代器的当前对象,也可以用其他字母比如%%afor /R 循环的指定目录 %%i in (通配符表示的filter,比如...
2022-09-20 03:29:41
109
原创 手册链接
CRIWARE Unity Plugin Manual: CRI Mana 组件CRIWARE Unity Plugin Manual: CRI Mana Unity Timeline扩展
2022-09-20 03:29:34
517
原创 assimp
使用cmake+mingw编译5.2.4版本的源码会报错,还未测试Visual Studioassimp-5.2.4\contrib\unzip\crypt.c:168: error: ignoring '#pragma warning ' [-Werror=unknown-pragmas] 168 | # pragma warning(pop)想到LearnOpenGL教程里写的当时...
2022-08-28 14:53:13
219
原创 矩阵
定义$$M=\begin{bmatrix}m_{11} & m_{12} & m_{13}\\m_{21} & m_{22} & m_{23}\\m_{31} & m_{32} & m_{33}\\\end{bmatrix}$$$m_{ij}$表示该元素在矩阵的第$i$行、第$j$列矢量(向量)可以表示为n×1的列矩阵(colum...
2022-08-26 07:21:29
207
原创 AssetBundle
资源加载Unity - Manual: Using AssetBundles Natively (unity3d.com)Assets, Resources and AssetBundles - Unity Learnunity使用AssetBundle来打包资源,在构建的程序上使用的资源以AB包为单位存储在硬盘上要使用一个不需要实例化的资源,比如Sprite等:将ab包从硬盘解压...
2022-08-14 04:28:40
689
原创 弱表和弱引用 weak table and weak reference
lua的弱引用就是用弱表实现的一般而言,table的key和value都是**强引用(strong reference)**的,这会阻止垃圾回收器对其的
2022-08-08 00:22:40
73
原创 与其他语言的交互
c调用lua--- lua脚本代码function test(a, b) return a + bend// c代码double call_test(lua_State* L, double a, double a) { int isnum; double result; // 将名为test的全局函数入栈 lua_getglobal(L, "test"...
2022-08-08 00:22:40
57
原创 垃圾回收 Garbage Collect
GCclass A{ public B b;}class B{ public A a;}void main(){ A a = new A(); a.b = new B(); B b = new B(); b.a = new A(); A a2 = new A(); B b2 = new B(); /...
2022-08-08 00:22:07
187
原创 协程 Coroutine
协程和线程协程是轻量级的线程,协程是由程序控制而不是操作系统,同一时间只能执行一个协程,其他协程则处于休眠状态unity的协程只发生在主线程上(因为需要一个MonoBehavior来启动,因此此时的上下文必然就是主线程),由于只能在主线程上访问Mono脚本或者Object资产,因此一般涉及这些的异步操作都会使用协程而不是新开一个线程...
2022-08-07 10:13:26
630
原创 智能指针
为什么要有很容易因为忘记释放内存而造成内存泄漏;以及在仍有(其他)指针引用(同一块)内存的情况下,使用当前指针进行内存的释放,这会使得其他指针指向非法内存为了更安全地使用动态内存,新的标准库提供了两种**智能指针(smart pointer)**来管理动态对象shared_ptr类#include <memory>// 默认初始化,其保存了一个空指针shared_ptr&...
2022-07-28 11:37:46
40
原创 makefile
makefile环境为windows10安装gcc编译器,配置环境变量PATH=安装目录/bin,即含有gcc.exe的目录(否则你在使用make命令时得输入mingw32-make.exe的全路径);复制一份该目录下的mingw32-make.exe的副本并重命名为make(否则你需要执行mingw32-make,而不是make)创建makefile文件(不需要后缀名,否则你得在执...
2022-07-28 00:36:56
95
原创 yaml-cpp
Fails to compile. Undefined reference to YAML::LoadFile链接错误,链接了错误的库官网给出的build方式没有包含Mingw编译器的,如果使用yaml-cpp的项目使用Mingw编译,则yaml-cpp也需要用Mingw编译(而不是网上随便下一个)cmake.exe -G ,-G可以指定编译器(Generator)调用cmake --he...
2022-07-25 04:35:40
810
原创 IMGUI
配置环境一步一步跟我学ImGui.第一讲.配置OpenGl2+ImGui环境 - iBinary - 博客园 (cnblogs.com)CMakeVisual Studio默认会添加opengl32.lib,而cmake需要手动配置set(PROJECT_LIBRARIES)# 不需要下面这行# find_package(OpenGL REQUIRED)# opengl 这个是必须...
2022-07-25 04:35:40
1303
原创 指针(pointer)
定义和赋值int i = 0;int *pi = &i;char c = 'a';char *pc = &c;int j = 1;// 将pi重新指向jpi = &j;&取地址运算符的操作数必须是左值,因为只有左值才表示一个内存单元,才会有地址,运算结果是指针类型(因为只有指针类型能存储地址)。注意pi和pc虽然是不同类型的指针变量,但它们的内存...
2022-07-19 14:35:30
142
原创 引用(reference)
指针和引用的区别指针可能指向某个实际对象,也可能指向0引用必定要代表某个对象(因此使用时不需要判断是否为NULL或0)int intValue = 1024; // int类型的对象int *pointer = &intValue; // pointer(指针),指向一个int对象int &referenceValue = intValue; // refer...
2022-07-19 14:35:30
224
原创 作用域和内存分配
局部比如函数内定义的对象,分配在栈上,离开作用域时释放内存全局程序内全局可见,生命周期为整个程序运行期间动态分配的内存可见性和生命周期介于局部和全局之间,使用new和delete操作符进行内存的分配和释放动态分配的内存是无名的,new无法为其分配的对象命名,而是返回一个指向该对象的指针内存泄漏(memory leak)void fun(){ int *p = new in...
2022-07-19 14:35:30
98
原创 const
const对象int i = 42;// 正确:i的值被拷贝给了ciconst int ci = i;// 正确:ci的值被拷贝给了jint j = ci;// 错误,不能修改const对象ci = 41const引用对常量的引用,不能用作修改其绑定的对象(因为是一个const修饰的常量)常量引用(仅)对(引用本身)可参与的操作做出了限定常量引用可以指向一个非常量对象(但是无...
2022-07-19 11:27:59
61
原创 通过GUID找到资产
using UnityEditor;using UnityEngine;public class FindAssetByGUIDEditorWindow : EditorWindow{ string guid = ""; string path = ""; [MenuItem("Tools/通过GUID找到资产 编辑器")] static void Crea...
2022-07-14 09:27:53
199
原创 程序常用英文单词 commonly used English word in program
按字母顺序[TOC]Aadjacency List 邻接表assume 假设assign 赋予(赋值)Bbreadth 广度,宽度backslash 反斜杠Cconvention 规范、惯例、习俗complexity 复杂度Ddeclaration 声明dimension 英[daɪˈmenʃn] 维度directed graph 有向图distinc...
2022-07-13 00:36:11
142
原创 预处理器指示符
include#include 指示符读入指定文件的内容 它有两种格式#include <some_file.h> #include "my_file.h"<>如果文件名用尖括号 < > 括起来,表明这个文件是一个工程或标准头文件,查找过程会检查预定义的目录我们可以通过设置搜索路径环境变量或命令行选项来修改这些目录,在不同的平台上这些方法大不相同,建...
2022-07-13 00:36:11
125
原创 CMake
最低CMake版本cmake_minimum_required(VERSION 3.5)项目名称project(hello_cmake)创建一个值为 hello_cmake 的变量${PROJECT_NAME}创建可执行文件add_executable(hello_cmake main.cpp)创建变量set(SOURCES src/main.cpp)# 使用变量SOURCES...
2022-07-13 00:35:42
75
原创 绘制线框 draw wireframe
底层API GL.Vertex绘制顺序在Camera的最后,无法控制using System.Collections.Generic;using UnityEngine;/// <summary>/// 绘制线框组件/// 使用方式:1.添加MeshFilter组件,然后附加对应mesh 2.右键该组件选择”根据MeshFilter组件生成Line数据“/// <...
2022-07-05 02:26:30
176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人