- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 Unity 拖动3d物体跟随鼠标(手指)移动
不垂直于地面的情况是 通过射线检测地面 返回碰撞的点 直接赋值给当前物体 也可以用于垂直于地面的情况if (Input.GetMouseButtonDown(0)) { Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out...
2021-06-29 11:55:00
1557
1
原创 Unity,UI拖拽(跟随手指移动)
public class UIDrag : MonoBehaviour, IPointerDownHandler, IDragHandler, IEndDragHandler{ #region 字段 public RectTransform canvas; private RectTransform imgRect; Vector2 offest = new Vector2(); #endregion private void Start() ...
2021-06-29 11:36:22
1096
原创 判断鼠标或者手势点击在UI界面那个物体上
public GameObject GetOverUI(GameObject canvas) //canvas 为当前界面canvas { PointerEventData pointerEventData = new PointerEventData(EventSystem.current);#if UNITY_EDITOR pointerEventData.position = Input.mousePosition;#else po...
2021-05-25 14:12:37
206
原创 Unity 静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析(Unity优化)
静态批处理[1]定义标明为 Static 的静态物件,如果在使用相同材质球的条件下,在Build(项目打包)的时候Unity会自动地提取这些共享材质的静态模型的Vertex buffer和Index buffer。根据其摆放在场景中的位置等最终状态信息,将这些模型的顶点数据变换到世界空间下,存储在新构建的大Vertex buffer和Index buffer中。并且记录每一个子模型的Index buffer数据在构建的大Index buffer中的起始及结束位置。在后续的绘制过程中,一次性提交
2021-05-08 16:18:10
1624
1
原创 Unity Animator 实现动画慢动作
using System.Collections;using System.Collections.Generic;using UnityEngine;namespace Invincible_Samurai{ public class AnimationTimeScaleController_TimeLength : StateMachineBehaviour { public float slowStart = 0.1f; public flo.
2021-03-24 10:59:17
1110
原创 Unity逐渐停止对称运动的物体
public class ShakeRun : MonoBehaviour{ //float rawY; //弹动的点 float startY; // 物体一开始的点 float curForce; //力量 float speed = 20; //定值改编运动速度 float currentY; //物体要运动的点 float curVelocity; //速度 [Range(0.000001f, 0.9999999f), SerializeF.
2021-02-20 18:51:40
245
原创 unity UGUI UI拖动
public void OnBeginDrag(PointerEventData eventData) { Vector3 p = eventData.position; p.z = transform.position.z- cam.transform.position.z ; startWorldP = cam.ScreenToWorldPoint(p); offset = transform.position - startW..
2021-02-03 18:39:14
277
2
原创 【Unity Shader】“#include“UnityCG.cginc“---常用帮助函数、内置结构体和全局变量
包含文件的位置:根目录\Editor\Data\CGIncludes知识点1:以下是Unity中常用包含文件: 文件名 描述 1、UnityCG.cginc 包含最常用的帮助函数、宏和结构体 2、UnityShaderVariables.cginc 在编译Shader时,会被自动包含进来,包含了许多内置的全局变量,如UNITY_MATRIX_MVP 3、Ligghting.cginc 包含了各种内置光照模型,如果编写SurfaceShader的话,会被自动包含进来 4、HLSLSur
2020-12-23 17:21:53
2254
1
原创 C#实现合并两个数组并除去相同元素
int[] Array_Heavy(int[] arr1,int[] arr2) { Dictionary<int, bool> temp1 = new Dictionary<int, bool>(); List<int> temp2 = new List<int>(); for (int i = 0; i < arr2.Length; i++) { if .
2020-12-01 11:17:29
1009
1
原创 C#实现常用的几种排序算法
//冒泡排序void BubbleSort(int[] array, int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (array[j] > array[j + 1]) { ...
2020-12-01 11:14:56
550
原创 Unity、C#、Lua面试题整理二、(持续更新)
二十四:C#,GC的原理答: 1.被分配内存空间的对象最有可能被释放。在方法执行时,就需要为该方法的对象分配内存空间,搜索最近分配的对象集合有助于花费最少的代价来尽可能多地释放内存空间。2.生命期最长的对象释放的可能性最小,经过几轮垃圾回收后,对象仍然存在,搜索它时就需要进行大量的工作,却只能释放很小的一部分空间。3.同时被分配内存的对象通常是同时使用,将它们彼此相连有助于提高缓存性能和回收效率。C#中的回收器是分代的垃圾回收器(Gererational GarbageCollector...
2020-11-17 21:05:29
1473
原创 Unity、C#、Lua面试题整理(持续更新)
一:什么是协同程序?答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句 话说,开启协程就是开启一个可以与程序并行的逻辑。可以用来控制运动、序列以及对象的行为。二:Unity3d中的碰撞器和触发器的区别?答:碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。 当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以 调用OnCollisionEnter/Stay/Exit函数; 当Is Trigger=true时,碰撞器被物理引擎所忽..
2020-11-08 21:50:22
2565
2
原创 Unity碰撞反弹
private void OnTriggerEnter(Collider other) { if (other.tag == "LeftRight") { //Debug.Log(Vector3.Angle(this.transform.forward, Vector3.forward)); Vector3 a = this.transform.localRotation.eulerAngles; ...
2020-11-06 20:18:55
1308
1
原创 2020-11-05
//Res目录已经自动实现了.与/的转换。自定义目录的时候,如果不实现转换//我们需要在require里面吧所有的[.]修改为///后缀实事求是,如果是.lua.txt的话,就需要在Loader里面寻找.lua.txtprivatebyte[]LoaderForCustomAssets(refstring_filePath){string_scriptPath=string.Empty;_filePath=_fil...
2020-11-05 19:58:22
82
原创 Unity 知道世界坐标系转换成UI上对应的位置
方法一:public class WorldToCanvas{ public static Vector2 Compute(RectTransform rectTransform, Camera wordCamera, Camera UIcamera, Transform game) { //rectTransform; //画布节点 //wordCamera; //场景相机 //UIcamera; //画布相机 //g...
2020-10-17 14:49:37
828
原创 C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
MemberwiseClone方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。为了实现深度复制,我们就必须遍历有相互引用的对象构成的图,并需要处理其中的循环引用结构。这无疑是十分复杂的。幸好借助.Net的序列化和反序列化机制,可以十分简单的深度Clone一个对象。原理很简单,首先将对象序列化到内存流中,此时对象和对象引用的所用对象.
2020-08-20 14:08:27
658
原创 c#,c语言,java面向对象知识点总结每周一练
1、关键词意义解释:public、 internal、protected、private、sealed、get、set、readonly、const、static、override、 constructor、destructor、Garbage Collector、CLR1.public:访问权限修饰符,同一程序集或者引用该程序集的其他程序集都可以访问2.internal:访问权限修饰符,只能在同一程序集访问类3.protected:访问权限修饰符,只能在同一个类或者派生类中访问4.priva.
2020-08-04 19:51:36
137
原创 c#,java,史上最全运算符大集合(位运算,复合运算,tyof运算,is,as,条件运算,自增自减运算,正码,反码,补码大集合)
§4.5 逻辑运算符与逻辑表达式逻辑运算符包含2个双目运算符(&&(逻辑与) 和 ||(逻辑或))和1个单目运算符(!(逻辑非))。具体符号和对应功能如下图表所示:§4.5.2 逻辑表达式在表达式中使用逻辑运算符, 则该表达式称为逻辑表达式。eg:using System;namespace MSN{ class MainClass { public static void Main(string[] args) ...
2020-07-29 20:21:18
356
原创 数据类型转换,C#控制台输入/输出语句
数据类型转换自动类型转换自动类型转换,亦可称为隐式类型转换 - 这些转换是编译器自动进行的转换。 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。eg:int iNum = 1202;float fNum = iNum;强制类型转换C#是强制类型语言,编译器会自动检测数据类型,如果不一致则会自动进行数据类型转换。如果不能隐式转换,则需要我们进行显示的转换。其方式有三种:(1)使用强制类型转换运算符()..
2020-07-29 20:07:49
727
原创 c#局部变量和全局变量
局部变量:声明在函数体内的变量,称之为局部变量。using System;namespace MSN{ class MainClass { int Add(int num1, int num2) { int sum;//局部变量 sum = num1 + num2; return sum; } public static void Main
2020-07-29 20:02:49
6078
原创 c#实现简易洗牌算法
实现思路:定义一个数组int[] poker = new int[54]存放54张牌,每次随机抽出2张牌交换(考虑相等的情况,可以抽出的是同一张牌),抽取次数足够多牌就洗的越散。 static void ShuffleCard() { //1.创建数组 int[] pokers = new int[54]; for (int i = 0; i < pokers.Length; i++) { .
2020-07-25 09:45:21
1187
原创 c#基础数据类型(虽然很简单,但是经常用到)
1.C#中,最常见的两大数据类型是值类型和引用类型。值类型也可称之为基础数据类型,包含简单类型,枚举类型,结构类型三种。引用类型包括字符串类型,数组类型,类类型,对象类型,接口类型和代理类型。常见的值类型:int float double struct引用类型:string ArrayList Hashtable class string创建后分配在字符串常量区,栈中存储的地址指向存储字符串的地址(虽然没存储在堆,但string也是引用类型,这点比较特殊)。大小不可修改,每次使...
2020-07-25 09:23:25
327
原创 第一个C#程序(学习c#就从这里开始)
using System;namespace MSN{ class MainClass { public static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.ReadKey(); } }}程序释义:using System; 引入命名空间System。【using】...
2020-07-25 09:13:49
173
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人