一:通用解决方案 ——SetActive优点:方便快捷缺点:SetActive(false)的物体上面挂载的脚本也不运行了,而很多时候我们需要那个脚本运行。这样就不能使用SetActive(true)或者SetActive(false)。如果把自己的引用给另外一个脚本来对自己SetActive(true)或者SetActive(false),又会造成多余的耦合,并不符合OOP设计理念   ——Disable优点:方便快捷缺点:Disable掉的物体,重新enable=true,会造成较大的性能消耗,如果此界面drawcall较多,会有明显的延迟   ——更改Scale...

  gEMN1CQh1PXt   2023年11月12日   16   0   0 Unity# Unity相关技术

一:ScrollView下重要组件属性及API的详解 ScrollView是一个组合UI,创建后有以下内容——Viewport:显示的区域,一般配合Mask一起使用——ScrollbarHorizontal:水平滑动条——ScrollbarVertical:竖直滑动条 ScrollView上最重要的就是ScrollRect组件:——Content:所有要显示的内容(可滑动的区域)——Horizontal:是否可以水平滑动——Vertical:是否可以竖直滑动——MovementType:滑动的类型(不受限制随意滑动,到边界出现弹性,到边界没有弹性)——Elasticity:弹性数值——I...

  gEMN1CQh1PXt   2023年11月12日   17   0   0 Unity# Unity相关技术

一:使用Unity自带的回调函数 当物体身上的Render组件是否被渲染时调用OnBecameVisible和OnBecameInVisible,类似于OnTriggerEnter和OnTriggerExit 物体自身上必须有相关Render组件 它所谓的渲染与不渲染包括Game视图和Scene视图两个,在电脑上测试会出现Game视图中已经不显示物体但是Scene视图中物体还被显示出来的问题,移动端不用考虑这个问题 下面的脚本挂载到被检测的物体身上 usingUnityEngine; publicclassTest:MonoBehaviour { privateboolisInVi...

  gEMN1CQh1PXt   2023年11月12日   15   0   0 Unity# Unity相关技术

一:物体无旋转时 transform.Translate(Vector3.forwardTime.deltaTime); transform.Translate(transform.forwardTime.deltaTime); transform.position+=transform.forwardTime.deltaTime; transform.position+=Vector3.forwardTime.deltaTime; 此时物体无旋转,世界坐标=局部坐标,所以以上四种方法的效果相同,物体朝向(0,0,1)方向移动 二:物体有旋转时 transform.Translate(...

  gEMN1CQh1PXt   2023年11月12日   14   0   0 Unity# Unity相关技术

推荐文章:https://connect.unity.com/p/dao-fang-li-zi-xi-tong usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; publicclassRewindParticlesSystem:MonoBehaviour { ParticleSystem[]particleSystems; float[]simulationTimes; publicfloatstartTime=2.0f; publicfloatsimulationSpeedSca...

  gEMN1CQh1PXt   2023年11月12日   11   0   0 Unity# Unity相关技术

一:IPhone IPhoneX/XS的高宽比:2.165,iphoneXR/XSmax的高宽比:2.164 usingUnityEngine; publicclassGameAdaptation:MonoBehaviour { publicTransform[]uis; privatevoidAwake() { //禁止屏幕锁屏 Screen.sleepTimeout=SleepTimeout.NeverSleep; if(Mathf.Abs((Screen.height1.0f/Screen.width)2.16f)<0.01f) { for(inti=0;i<ui...

  gEMN1CQh1PXt   2023年11月12日   12   0   0 Unity# Unity相关技术

判断是否点击到UI上可以使用UnityEngine.EventSystem下的EventSystem.current.IsPointerOverGameObject()检测,但是在移动端无法使用该方法,以下三种方法可以解决: 第一种方法: 如果使用的是Touch类进行移动端手势判定,则可以使用IsPointerOverGameObject()的重载方法,传入触碰的手指Id if(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { //TODO:点击在了UI上 } 第二种方法: 如果使用的...

  gEMN1CQh1PXt   2023年11月12日   10   0   0 Unity# Unity相关技术

Lua中的模块就是一个封装库,类似于C的命名空间,可以把公有的变量和方法放在一个文件中,以API接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度 一:模块的定义 两种定义模块中函数的形式,可以用匿名函数定义也可以用普通函数定义 二:模块的使用(require) 我个人理解引入模块就是引入一个类,引入这个模块(类)之后就可以使用这个模块(类)中的全局变量和全局函数例如在一个文件名为moduletext的lua文件中引入模块的文件名不区分大小写  引入模块时还可以用一个变量去接收,这个变量相当于是引入模块中的返回值使用此方法时,模块文件的模块名与返回值必须一致 ...

  gEMN1CQh1PXt   2023年11月12日   19   0   0 Lua 热更新热更新

一:Lua中内置的迭代函数 ——pairs ——ipairs ——pairs与ipairs的区别1.pairs既能遍历数组形式的表也能遍历键值对形式的表,ipairs只能遍历数组形式的表       2.pairs会遍历所有不为nil的元素(如果遇到nil则跳过当前元素继续遍历下一个),ipairs从索引1开始遍历遇到nil则停止遍历         遍历时先遍历整型数字的键,再遍历字符串的键(其实内部本身是根据Hash值来排序的,而Hash值本身就是随机排...

  gEMN1CQh1PXt   2023年11月12日   15   0   0 Lua 热更新热更新

一:创建表 在Lua中,表的创建是通过构造表达式来完成——最简单的表是{},用来创建一个空表——也可以像创建字典一下初始化一个表——也可以像创建数组一样初始化一个表 表的索引可以是数字或字符串: 二:访问元素 ——用键值对方式初始化的表用点或者用中括号(中括号里面必须是字符串)去访问——用数组方式初始化的表直接用索引下标访问就可以(Lua中的索引下标默认是从1开始,索引可以为负数) 表与列表,字典等一样不固定长度大小,可以增添,删除,修改元素注意:增添元素与删除元素都不会改变索引下标,而插入元素和移除元素会改变索引下标 三:增添元素 四:修改元素 五:删除元素 ...

  gEMN1CQh1PXt   2023年11月12日   13   0   0 Lua 热更新热更新

Lua中没有数组这种类型,是利用表这种数据类型去实现的数组,但是与C的数组不同,Lua中用表实现的数组是可扩展的,可动态修改 一:声明数组 ——普通声明用数组的方式声明一个表就是声明一个数组 ——动态声明 动态声明可以声明索引为负数的数组(Lua中的索引下标默认是从1开始的,也可以为负数) 二:遍历数组 注意遍历多维数组时,第一维不能为nil <!-本文包含:- <!--

  gEMN1CQh1PXt   2023年11月12日   13   0   0 Lua 热更新热更新

一:字符串操作 所有的字符串操作都会返回一个新的字符串,不会对原有的字符串有影响 ——string.upper:将所有字母转换为大写 ——string.lower:将所有字母转换为小写 ——string.gsub:替换字符串 ——string.find:查找字符串返回值是两个number类型的值,所查找到字符串的起始位置与结束位置(返回值可以为nil) ——string.reverse:反转字符串 ——string.char:将整型数字转换为字符串 ——string.byte:将字符串转换为数字 ——string.len:计算字符串长度计算的是字节长度(一个中文字符占两个字节) ——...

  gEMN1CQh1PXt   2023年11月12日   14   0   0 Lua 热更新热更新

一:函数的定义 在Lua中函数是一个数据类型! 二:函数的特性 ——函数可以当作一个变量作为数据赋值:将myfun作为数据变量传递给fun1,fun1函数就有了与myfun函数相同的功能 ——函数可以作为参数传递(类似于C中的委托与事件):将myPrint函数当做参数传递给add函数的fun参数 ——函数可以定义为匿名函数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ——函数可以返回多个值 三:函数的可变参数 将函数参数写为三个点,则当前参数为可变参数:Lua会把可变参数当作一个以数组方式存储数据的表,表的名字叫arg,arg中保存着参数的键和值以及参数个数如果想要遍...

  gEMN1CQh1PXt   2023年11月12日   17   0   0 Lua 热更新热更新

一:算数运算符 注意Lua中没有+=,-=,这些运算符+:加-:减:乘/:除&nbsp;%:余^:幂-:负Lua中没有float,double等类型,所有数字都是number类型,所以计算所得数字是多少就是多少 Lua中+只能用作数字计算,不能用作字符串连接&nbsp; 二:关系运算符 :等于=:不等于&gt;=:大于等于&lt;=:小于等于&gt;:大于&lt;:小于 三:逻辑运算符 and:逻辑与or:逻辑或not:逻辑非 Lua中没有三目运算符,但是可以利用函数的传值特性模拟出三目运算符:这样写比较麻烦,可以利用and与or的短路特点将Lua中的三目表达式写为这样resu...

  gEMN1CQh1PXt   2023年11月12日   20   0   0 Lua 热更新热更新

一:while循环(C的while循环) 二:for循环(C的for循环) ——数值for循环 Lua中的for循环三个表达式在循环开始前一次性求值,以后不再进行求值:下面的循环程序的三个表达式在一开始就赋了值并且之后不会被修改,i改变任何值都是执行10次循环,i修改的值只会影响内部的值 &nbsp; ——泛型for循环(使用Lua中的迭代器函数pairs与ipairs,类似于foreach) 三:repeat-until循环(C的do-while循环) 四:嵌套循环 一个小例子: Lua中没有continue只有break,可以用break跳出循环,在嵌套循环中brea...

  gEMN1CQh1PXt   2023年11月12日   27   0   0 Lua 热更新热更新

一:if判断 二:if-else判断 三:if-elseif判断 elseif中间没有空格 <!-本文包含:- <!--

  gEMN1CQh1PXt   2023年11月12日   31   0   0 Lua 热更新热更新

一:Lua的语法规则 ——语句结尾的分号可加可不加 ——C中需要声明类和方法去执行语句,而Lua中不需要声明类和方法就可以直接执行语句(Lua轻量小巧简单) ——与C不同,Lua中的任何参数都不能声明类型,只需要声明变量名就可以 二:Lua的注释 ——单行注释&nbsp; ——多行注释&nbsp; 多行注释与单行注释之间的转换技巧:将多行注释的开头添加一个-,则第一行和最后一行都变成了单行注释 三:Lua的标识符规则 ——只能由数字字母和下划线组成,以字母和下划线开头——最好不要使用下划线+大写字母(_MyVar)的标识符,Lua中有些保留字也是这样的——Lua与C一样区分大小写...

  gEMN1CQh1PXt   2023年11月12日   16   0   0 Lua 热更新热更新

一:相机跟随 ——直接把相机作为要跟随物体的子物体我在制作小地图相机的时候一般这样用其他的情况都不推荐 ——计算偏移量求出相机正确的实时位置 usingUnityEngine; publicclassCameraController:MonoBehaviour { publicTransformtargetPos;//跟随物体的位置 privateVector3offset;//偏移量 privatevoidStart() { offset=transform.positiontargetPos.position; } privatevoidLateUpdate() { tran...

  gEMN1CQh1PXt   2023年11月12日   16   0   0 # Unity相关技术经验分享

一:前言&nbsp; 一条贝塞尔曲线是由一组定义的控制点P0到Pn,n=1为线性,n=2为二次......第一个和最后一个控制点称为起点和终点,中间的控制点一般不会位于曲线上&nbsp;获取两个点之间的点就是通过线性插值(Mathf.Lerp),0&lt;=t&lt;=1 二:贝塞尔曲线公式 ——线性公式:给定点P0、P1,线性贝兹曲线只是一条两点之间的直线。这条线由下式给出 ——二阶贝塞尔曲线:二次方贝塞尔曲线的路径由给定点P0、P1、P2的函数B(t)公式推导:由(P0,P1),(P1,P2)分别求线性公式所得的结果P0‘和P1‘再带入线性公式,整理所得即为二次公式 P0,P1所...

一:前言 获取到选中的文字:哈哈 二:实现 UGUI的InputField提供了selectionAnchorPosition和selectionFocusPosition,开始选择时的光标下标和当前光标下标 usingUnityEngine; usingUnityEngine.EventSystems; usingUnityEngine.UI; usingSystem; publicclassGameInputField:InputField { privatestringm_SelectedText;//当前选中的文本 publicstringSelectedText { ge...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~