Unity和C#
无
qq_38234381
这个作者很懒,什么都没留下…
展开
-
fwidth、ddx、ddy解析
ddx和ddy:当代GPGPU在像素化的时候一般是以2x2像素为基本单位,那么在这个2x2像素块当中,右侧像素对应的fragment的属性值(具体是哪个属性取决于ddx的参数传的是哪个属性)减去左侧像素对应的fragment的属性值就是ddx;下侧像素对应的fragment的属性值减去上侧像素对应的fragment的属性值就是ddy。ps:ddx(v)和ddy(v) 在计算出结果的同时,也会存储该像素的v值,这样它周围的像素才能获取到该点的v值fwidth:fwidth(v) = abs(ddx(v原创 2022-02-07 23:42:04 · 2094 阅读 · 0 评论 -
UnityUI相机的创建
URP下UI相机的制作:1.Canvas相机设置为指定UI相机2.UI相机RenderType指定为Overlay3.UI相机CullingMask设为仅UI,场景相机CullingMask中除去UI4.将UI相机加入到主相机栈中内置管线下UI相机的制作:1.Canvas相机设置为指定UI相机2.UI相机ClearFlags为Depthonly,Depth设置为0(大于场景摄像机)3.UI相机CullingMask设为仅UI,场景相机CullingMask中除去UI...原创 2021-10-28 11:27:47 · 3654 阅读 · 0 评论 -
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]引发的思考
一.LayoutKind:控制导出为非托管内存中的对象时对象在内存中的布局三张类型:1.Auto:运行时会自动为非托管内存中的对象成员选择适当的布局,不能用在托管代码中,否则会导致异常2.Explicit:精确布局,需要用FieldOffset()设置每个成员的位置,这样就可以实现类似c的公用体的功能[StructLayout(LayoutKind.Explicit)] struct S1{ [FieldOffset(0)] int a; [FieldOffset(0)] int原创 2021-10-11 23:02:00 · 792 阅读 · 0 评论 -
Unity中单线程和多线程
Unity是单线程的(也就是有一个主线程)但Unity中可以使用多线程,例如一些Unity内部的异步方法就是另开了一个线程(如https://blog.csdn.net/fcauto2012/article/details/72801857),当然我们也可以手动开一个子线程(注意在子线程中会受到很多的限制,如:https://blog.csdn.net/qq_28180261/article/details/64500720)另外,这里特别提一下协程:协程不是线程,也不是异步执行的。协程和 MonoBe原创 2021-07-22 22:54:41 · 1893 阅读 · 1 评论 -
C++和C#对比
内容摘自:https://blog.csdn.net/qq_38234381/article/details/115437997?spm=1001.2014.3001.5502https://blog.csdn.net/qq_38234381/article/details/104359385?spm=1001.2014.3001.5502C++和C#String是否是’\0’结尾:C++中没有规定string以’\0’结尾,但大部分编译器在实现时会为string结尾增加’\0’C#string并原创 2021-06-23 09:24:52 · 362 阅读 · 0 评论 -
Unity Physics.BoxCast说明
Declarationpublic static boolBoxCast(Vector3center,Vector3halfExtents,Vector3direction, outRaycastHithitInfo,Quaternionorientation= Quaternion.identity, floatmaxDistance= Mathf.Infinity, intlayerMask= DefaultRaycastLayers,QueryTriggerInte...原创 2021-06-20 22:35:46 · 3425 阅读 · 2 评论 -
刚体碰撞条件测试
首先刚体碰撞的基本条件是:双方都有碰撞体且至少一方有刚体的情况在满足该条件下我进行了一系列的实验,如下:原创 2021-05-30 16:05:52 · 251 阅读 · 0 评论 -
Unity中获取物体尺寸
主要是对这篇博文的补充:https://linxinfa.blog.csdn.net/article/details/107532897先说下Bounds的概念,即物体的外包矩形,不仅BoxCollider有,其它组件或其它形状的碰撞体一般都有该成员,其值代表了物体在xyz三个方向上的长度,只要是Bounds的值(不管它是什么上的)均可以直接与世界坐标进行计算SpriteRenderer的Bounds和BoxCollider2D的Bounds相同BoxCollider2D的Size与缩放无关,而Bo原创 2021-05-03 20:36:15 · 1195 阅读 · 1 评论 -
C#类中的内部类型
这里类中的内部类型包括:类、结构、枚举、接口默认修饰符都为private(同其它成员),private表示该类型只能在当前类中使用,如果想在其它类中使用需要更改为public,然后以外部类.内部类的形式使用;成员的默认修饰符同类外,但只有public和internal成员(静态成员也是)才能被外部类访问(但不能被其它类访问),而内部类可以访问外部类的所有成员,枚举成员无访问权限修饰符,内定为public,接口成员的访问修饰符必须支持继承,默认public(同外部接口,这里的接口是狭义上的,即只支持写原创 2021-04-23 11:19:53 · 619 阅读 · 0 评论 -
Unity与Mono的关系
一、Mono简介https://baike.baidu.com/item/mono/60423?fr=aladdinMono包括 c#编译器、Mono运行时,Mono类库、基础类库。c#编译器,目前使用的是mcs,主要将c#项目编译成相应的程序集Mono运行时中也有编译器,负责将程序集编译译成运行平台上的本机代码,分为三种形式,即时编译(JIT)、提前编译(AOT)和完全提前编译(Full-AOT)。这一步很重要,因为本机代码直接作用于硬件,所以可以加快运行速度。这样Unity就集合了高级语转载 2021-04-04 15:04:26 · 1319 阅读 · 0 评论 -
.Net基础——程序集与CIL及C#编译执行过程
来源:https://www.cnblogs.com/freddysia/p/9314658.html注:CIL和MSIL:CIL在微软的产品中等同于MSIL 这里的编译是指广义的编译(包括狭义编译和链接等过程) ILASM和ILDASM工具详见:.Net Framework IL汇编与反汇编工具1. 程序集和CIL:程序集是由.NET语言的编译器接受源代码文件产生的输出文件,通常分为 exe和dll两类,其中exe包含Main入口方法可以双击执行,dll则需要被其他程序集调用执行。 C转载 2021-04-04 11:52:24 · 592 阅读 · 0 评论 -
Unity2019Android调试
可以使用UnityRemote进行调试,步骤如下:在手机上安装UnityRemote5 将手机用USB线与电脑连接,在弹出的窗口中选择传输照片或者文件都可以(仅充电不可以) 手机进入开发者模式并开启USB调试 在Unity下切换到Android平台,并根据需要选择Build参数(这里的Build参数如果仅仅是在编辑器下运行并不打包的话可以不用勾选,保持默认即可,还有一个RunDevice参数,当我们连接操作成功之后该参数中会多一个自己的设备,建议选自己的设备,但一般情况下选不选并无影响) 在Pl原创 2021-03-27 22:22:52 · 810 阅读 · 0 评论 -
托管代码和非托管代码
托管代码简介:托管代码 (managed code)同受管制的代码,由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。从哪来:托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript原创 2021-03-27 19:57:25 · 377 阅读 · 0 评论 -
BOM字符说明
BOM字符(Byte Order Mark):概念:按照UTF-8的编码格式bom为0xEF 0xBB 0xBF这三个字符。编码格式只是表现形式,无论它的编码格式是什么,它的作用都是不变的。在UTF-8编码格式的文件中,它可以表示当前文件是否是UTF-8编码的,而在UTF-16(其它可以类推)中,bom具有表示字节顺序的作用,即指明两个字节中的数据谁在前谁在后(也就是大端和小端模式:https://blog.csdn.net/jason_cuijiahui/article/details/79010原创 2021-03-20 15:19:09 · 965 阅读 · 0 评论 -
Equals和==及GetHashCode简述
默认情况下,Equals比较的是值,而==比较的是地址我们自定义的类,其对象哪怕值完全相同,用Equals比较仍返回false的原因就是Equals是父类中的方法,而父类是不知道我们自定义类的对象的成员的,所以返回false,若想比较只能重写Equals两个特例:值类型,它继承于System.ValueType(),System.ValueType()又继承于Object,且System.ValueType()是引用类型,而System.ValueType()对Equals()和==操作符进行了原创 2021-03-14 20:41:26 · 143 阅读 · 0 评论 -
[StructLayout(LayoutKind.Sequential, Pack =1)]解释
[StructLayout(LayoutKind.Sequential)]结构体是由若干成员组成的.布局有两种1.Sequential,顺序布局,比如struct S1{ int a; int b;}那么默认情况下在内存里是先排a,再排b也就是如果能取到a的地址,和b的地址,则相差一个int类型的长度,4字节[StructLayout(LayoutKind.Sequential)] struct S1{ int a; int b;}这样和上一个是一样的.因为默认的转载 2021-02-17 15:57:29 · 3397 阅读 · 0 评论 -
左右手坐标系与旋转正向
这两个问题很容易弄混淆。要确定旋转正向必须先确定是左手坐标系还是右手坐标系1,判定坐标系:1.左手坐标系: 伸开我们的左手, 掌心向外, 大拇指与食指成90度, 中指、无名指和小指弯曲, 大拇指指向的方向就是X轴正方向, 食指指向的方向就是Y轴正方向, 中指、无名指和小指指向的方向就是Z轴正方向2.右手坐标系: 伸开我们的右手, 掌心向内, 大拇指与食指成90度, 中指、无名指和小指弯曲, 大拇指指向的方向就是X轴正方向, 食指指向的方向就是Y轴正方向, 中指、无名指和小指指向的方向就是Z轴正方原创 2021-02-03 08:51:18 · 3929 阅读 · 0 评论 -
简单理解AutoResetEvent及ManualResetEvent
AutoResetEvent:构造方法:AutoResetEvent对象有两个状态,有信号和无信号,在初始化时可以分别用true和false指定WaitOne:该对象在无信号时调用WaitOne方法,当前线程会阻塞,直到在其它线程中将其状态设置为有信号为止。有信号时调用并不会影响当前线程的执行Set和Reset:Set()方法可以设置当前AutoResetEvent对象状态为有信号,Reset则设置为无信号ManualResetEvent:与AutoResetEvent基本相同,只不过A原创 2021-01-27 15:20:50 · 604 阅读 · 0 评论 -
06-初识FairyGUI
两段代码:using System.Collections;using System.Collections.Generic;using UnityEngine;using FairyGUI;using DG.Tweening;public class JoyStick : EventDispatcher{ //事件监听者 public EventListene...原创 2019-09-29 16:08:36 · 469 阅读 · 0 评论 -
05-初始FairyGUI
直接上代码:using System.Collections;using System.Collections.Generic;using UnityEngine;using FairyGUI;public class PlayerWindow : Window{ private GameObject player; public PlayerWindow(Gam...原创 2019-09-27 21:27:39 · 301 阅读 · 0 评论 -
04-初始FairyGUI
同样是关于一段代码的理解:using System.Collections;using System.Collections.Generic;using UnityEngine;using FairyGUI;public class FairyGUIText3 : MonoBehaviour{ private GComponent mainUI; private ...原创 2019-09-25 22:22:35 · 309 阅读 · 0 评论 -
03-初识FairyGUI
同样是关于其中一段代码的理解:using UnityEngine;using FairyGUI;using DG.Tweening;public class FairyGUIText2 : MonoBehaviour{ private GComponent mainUI; private GComponent addPower; private float s...原创 2019-09-24 11:26:51 · 286 阅读 · 0 评论 -
01-初识FairyGUI
刚刚接触FairyGUI,说下我自己对FairyGUI工程目录文件的理解:.objs:存储内部数据,不需要加入版本管理assets:包数据放置目录settings:配置文件放置目录还有一个工程标识文件...原创 2019-09-22 17:24:31 · 202 阅读 · 0 评论 -
02-初识FairyGUI
今天刚刚接触到FairyGUI的UI导入到Unity中的代码方法,关于其中一段代码的理解如下:using System.Collections;using System.Collections.Generic;using UnityEngine;using FairyGUI;public class FairyGUIText : MonoBehaviour{ // Sta...原创 2019-09-22 17:18:33 · 192 阅读 · 0 评论 -
07-FairyGUI编辑器细节
FairyGUI中的锚点又称为原点,是计算位置坐标的点(默认左上);轴心:旋转、缩放、倾斜这些变换时的轴心点。原创 2019-10-20 15:32:18 · 394 阅读 · 0 评论 -
C#默认访问修饰符
准确的说,不能一概而论类(class)或结构(struct)如果不是在其它类或结构中的话,它的访问类型要不就是internal, 要不就是public换句话说,如果它在其它类或结构中的话,则可以为private 或protected等。下面我说的类和结构,如无特殊说明,均指非"类中类"类或结构的默认访问类型是internal类中所有的成员,默认均为private接口默认访问符是internal接口的成员默认访问修饰符是public,也不可能是其他访问修饰符命名空间,枚举类型成员默原创 2021-01-05 21:47:00 · 423 阅读 · 0 评论 -
C#中DateTime相关
年:yyyy月:MM日:dd时:hh:12小时制HH:24小时制分:mm秒:ss原创 2020-12-06 18:34:22 · 246 阅读 · 0 评论 -
C#枚举类型向其它类型的转换
博客:https://www.cnblogs.com/wangyblzu/p/6543037.html下面是我的一些补充:typeof() 和GetType()的区别:1、typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称。2、GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型。比如有这样一个变量i:Int32 i = new Int32();i.GetType()原创 2020-11-22 17:24:44 · 326 阅读 · 0 评论 -
Unity实时GI与烘焙GI
在Unity2019.3.8中,当我们新建一个场景时,默认的灯光设置为:自带的主平行光:Realtime灯光面板:Baked GI -> Light Mode为ShadowMask(不是Distance ShadowMask)新建物体的Contribute GI默认是关闭的该默认设置有一个不足,即不能处理物体之间的间接光照,而解决间接光照最好的办法便是全局光照(GI),下面着重讲解灯光面板的GI设置,同时也会给出该不足的若干解决方法:Realtime GI:虽然名字中含有Re原创 2020-10-31 17:12:34 · 2044 阅读 · 1 评论 -
OpenGL/DirectX及其相关基本介绍
①OpenGL/DirectX:由于开发者直接访问GPU是一件非常麻烦的事,所以就出现了OpenGL和DirectX这些图像应用编程接口。它们架起了上层应用程序和底层GPU的沟通桥梁。一个应用程序向这些接口发送渲染命令,而这些接口会依次向显卡驱动发送渲染命令,这些显卡驱动是真正知道如何和GPU通信的角色,正是它们把OpenGL或者DirectX的函数调用翻译成了GPU能够听懂的语言。同时它们也负责把纹理等数据转换成GPU所支持的格式。一个比喻是,显卡驱动是显卡的操作系统。Ps:显卡驱动由显卡制造商提原创 2020-10-13 20:48:12 · 1294 阅读 · 0 评论 -
Shader笔记
#pragma multi_compile和#pragma multi_compile_local:https://www.freesion.com/article/1083906773/https://zhuanlan.zhihu.com/p/77043332原创 2020-10-06 08:27:45 · 490 阅读 · 0 评论 -
齐次坐标及其相关内容的解释(转载)
术语:大多数3D工作中,我们参照的依据是欧几里得几何学中的三维空间(X,Y,Z)。但在某些情况下,参照投影几何更适用,除了X,Y,Z分量外,增加一个W分量,这个四维空间叫做“投影空间”,在四维空间中的坐标叫做“齐次坐标”。为了达到3D软件的目的,“投影的”和“齐次的”可以理解为“4D”。不是四元数:虽然四元数跟齐次坐标很像,都是4D矢量,通常用(X,Y,Z,W)来表示,但是,四元数和齐次坐标是不同的概念,使用的领域也不同。这篇文章跟“四元数”没有一毛钱关系。类比2D:了解3D..转载 2020-09-20 22:40:52 · 2201 阅读 · 0 评论 -
UniRx学习笔记
一些基本的用法:using UnityEngine;using UniRx;namespace UniRxLesson{ public class IntroExample : MonoBehaviour { //Subscribe的参数是一个lambda表达式,因为参数没有作用,所以用_表示(可以理解为一种习惯,实际上_和普通参数没有区别) void Start() { //监听第一次点击按钮的事件,并执原创 2020-08-10 16:21:00 · 835 阅读 · 0 评论 -
Json学习笔记
Json基本语法:json数据结构:代码事例://program.csusing LitJson;using System;using System.Collections.Generic;using System.IO;namespace JsonStudy{ class Program { static void Main(string[] args) { List<Skill> sk原创 2020-07-25 19:31:30 · 151 阅读 · 0 评论 -
John Lemons Haunted Jaunt项目总结
教程地址:https://learn.unity.com/project/john-lemon-s-haunted-jaunt-3d-beginner-1三.环境3.更改场景中的方向光⑥Light组件->RealtimeShadows属性->Resolution属性,通过将UseQualitySettings 更改为 VeryHighResolution,可以获得更高质量的阴影4.创建全局光照之光照贴图效果②菜单栏,Rendering->Lighting Setting原创 2020-05-20 20:56:40 · 787 阅读 · 0 评论 -
Unity模型动画学习笔记
1.模型动画的类型:目前常用的就两种,Generic和Humanoid,前者普遍适用于各种模型,但灵活性不高,后者只适用于人形动画,但灵活性高先说Generic,非人形的模型我们一般选择该选项,然后在AvatarDefinition中可以选择生成Avatar(若该模型有自己的模型动画)也可以不生成使用其它相同骨骼的Avatar(常常用在该模型没有自己的模型动画但却想要使用其它相同骨骼结构模型的动画),这里对骨骼结构相同的要求是非常严格的。Avatar文件存储的是骨骼映射的相关信息,Generic原创 2020-05-19 09:09:24 · 823 阅读 · 0 评论 -
Unity小地图的制作
①首先创建一个画布②在该画布下创建一个RawImage,用来显示小地图,关于它:http://c.biancheng.net/view/2726.html③创建一个Render Texture④创建一个摄像机在该画布下,并设置该摄像机只渲染小地图图标所在的层级,然后将Target Texture设置为③中创建的对象⑤在所有需要在小地图上显示的物体下创建其显示图标,并设置层级为④中摄...原创 2020-03-11 21:02:52 · 459 阅读 · 0 评论 -
Unity解决物体绑定刚体后带来的一些晃动问题
今天在做一个小Demo时,遇到了这样一个问题:其中人物在移动时敌人身上的瞄准标记总是在晃动,特别是当人物贴墙走时,晃动更加明显。分析问题后,因为敌人身上的瞄准标记是人物的子物体,而人物移动的方式是通过刚体施加不同方向的力实现的,所以猜测可能是刚体施加力时标记也受到了力的作用(在与墙发生碰撞时同样会产生力的作用),又因为代码中的逻辑是使瞄准标记的位置和敌人的位置相同,所以会出现晃动问题。...原创 2020-03-02 20:51:31 · 2388 阅读 · 0 评论 -
Unity对象池
对象池:对象存储在一个池子中,当需要再次使用时取出,而不需要每次都实例化一个新的对象,将对象循环利用起来。当我们需要大量实例化对象时可采用对象池,如游戏中的子弹等物体。下面是一个对象池的代码:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Object...原创 2020-02-20 20:37:06 · 276 阅读 · 0 评论 -
Unity中资源管理器的创建
实例代码:using System.Collections;using System.Collections.Generic;using UnityEngine;[CreateAssetMenu(fileName = "ManagerVarsContainer", menuName = "CreateManagerVarsContainer", order = 1)]public...原创 2020-02-19 10:43:40 · 605 阅读 · 0 评论