![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
文章平均质量分 63
Reason and calmness
Reason and calmness
展开
-
lua系统学习15-捕获和异常
Package.loadlib参数:动态库的完整路径和一个函数名称。loadlib函数加载指定的库,并没有调用库中的任何函数,它会将一个c函数作为Lua函数返回。在Unity中使用Lua 这个方法很常用通常使用require来加载c程序块 ,这个函数会搜索指定的库,然后用loadlib来加载库,并返回初始化函数。这个初始化函数应将库中提供的函数注册到lua中,就好像一段lua代码定义了其他的函数一样。处理错误if not n then error(“message”) end当n为假的时候 抛原创 2021-11-25 17:57:26 · 1100 阅读 · 0 评论 -
lua系统学习14-动态加载与编译
编译loadstringloadingstring与loadfile类似 不同之处在于它是从一个字符串中读取代码,而非从文件读取。f=loadstring(“i=i+1”)—此时loadstring返回的是一个函数。这就是解释性语言的好处,直接在编译之后动态的去加载代码。假设我们使用loadfile读取文件,文件若是为空调用的时候将会导致异常报错。我们可以使用assert 更清楚地显示错误消息。当发生错误的时候 assert用来引发一个错误。f=assert(loadstring(“io_st原创 2021-11-24 18:08:28 · 384 阅读 · 0 评论 -
lua系统学习13-自定义创建一个迭代器
使用Closure特性自己创建迭代器function IteratorDIY(t1) function iteratorTableValue(t) local i=0 return function () i=i+1; return t[i] end end for i in iteratorTableValue(t1) do print(i) endendIteratorDIY({0,1,2,3,4,5,6,'\\0'});原创 2021-11-24 17:16:06 · 529 阅读 · 0 评论 -
lua系统学习12-深入函数
Closure 闭合函数table的排序方法就是用到了这种函数,匿名函数。示例names={"Miracle","Jack","xiaosha"}grades={Miracle=6,Jack=2,xiaosha=3}for i,v in ipairs(names) do print(i,v)endt=table.sort(names,function(name1,name2) return grades[name1]<grades[name2] end)fo.原创 2021-11-23 10:50:05 · 367 阅读 · 0 评论 -
Unity性能优化——GameObject生成IO消耗问题分析
发现如果一个预制体内部里放有其他预制体2,会进行io读取的开销。这个预制件2在预制件1中出现几次它就会进行几次的io开销。所以尽量不要在预制体里直接塞另外预制体。尽量动态生成测试:为了确保测试结果单一性,避免偶然。测试物体生成基数都以208,都通过resources读取prefab然后再生成,并且每次测试重新运行项目● 先测试一个预制体内部有很多其他预制体的情况● 测试直接instantiate动态生成预制件。测试结果:测试1- IO 6.30ms Instantiate 1.52.原创 2021-11-19 17:57:21 · 4239 阅读 · 0 评论 -
lua系统学习11-函数
return函数与块在lua中如果在一个块内return之后出现了语句,编译器就认为他是错误代码。如:错误示例:function returnFunc() return 1 print("2")endprint(returnFunc())C:\Users\Admin\Downloads\luaforwindows-5.1.5-52\files\lua5.1.exe: C:/File/Lua/Return.lua:8: 'end' expected (to close 'fun原创 2021-11-17 19:27:27 · 675 阅读 · 0 评论 -
lua系统学习10-迭代器
迭代器表迭代器数组迭代器io文件行迭代器字符串迭代器1.表迭代器function iteratorpairsStruct(t) ---用来读取table表的 for i, v in pairs(t) do print("i是什么:" .. i) print("v是什么:" .. v) endendlocal t={["x"]="x2",["y"]="y2",["z"]="z2",2}iteratorpairsStruct(t).原创 2021-11-13 17:57:47 · 526 阅读 · 0 评论 -
lua系统学习09-控制结构
控制结构IF结构function nestIF() booleanCondition=1; if booleanCondition==1 then print("条件为True") else print("条件为false") endendIF~ElseIF嵌套---nest Ifelse age=tonumber(io.read()) if age>60 then print("老年人")原创 2021-11-13 16:56:01 · 378 阅读 · 0 评论 -
lua系统学习08-Chunk与局部变量
关于上篇多重赋值,还发现一个特性也算是函数的一个特性函数的返回值支持返回多个。可以使用多重赋值被多个变量接收。如:function func() return 1,2enda,b=func()print(a)print(b)debug12这样就不需要手动创建一个集合去返回了。非常便捷就可以为指定变量赋予指定的值局部在lua中也有语句块Chunk的概念,有块的概念就有局部的概念,在lua局部变量使用local语句来创建。测试在Chunk脚本中加载multiplyA原创 2021-11-12 23:40:02 · 497 阅读 · 0 评论 -
lua系统学习07-多重赋值
语句赋值Lua支持多重赋值一般人理解多重赋值都按照这种写法。function multAssignment() a,b=1 print(a) print(b)endmultAssignment()但是输出的结果表明在lua中这种写法是错误的。1nil我不知道为什么我第一印象里想到多重赋值是这样的,可能貌似是py的写法,好久没写py了在c#里也可以这样写,但是我记得C#中这样写它只会给最后一个变量赋值。具体是不是这样大家去试试。在lua中多重赋值正确写法f原创 2021-11-12 19:30:00 · 584 阅读 · 0 评论 -
lua系统学习06-Table构造函数
最简单的构造器是“{}”,用来创建一个空表。可以直接初始化数组:可以使用表构造一个链表:list = nilfor line in io.lines() do if line=="0" or line=="false" then break; end list = {nextVar = list, valueVar = line}endl = listwhile l do print(l.valueVar) l = l.nextVare原创 2021-11-12 18:22:19 · 593 阅读 · 0 评论 -
lua系统学习05-表达式
函数:函数可以存储在变量中,可以作为函数的参数 可以作为返回值。可以重新定义函数增加新的功能 ///这句话暂时没理解 是指动态时期重新定义?还可以避免运行不可靠代码创建安全运行环境而隐藏函数lua的所有标准库都是c实现的。所以可以调用lua或c实现的函数。UserData自定义类型userdata可以将c数据置入在lua变量中。userdata 用来描述应用程序或者使用 C 实现的库创建的新类型。例如:用标准 I/O 库来描述文件。表达式常量 、变量、点操作符、一元运算符、二元运算符、原创 2021-11-11 16:54:22 · 588 阅读 · 0 评论 -
lua系统学习04-table表
Table可以通过整数、字符串以及其他类型的值 除了nil 来作为索引值。table类似与c#中的list 可以动态地添加任意数量的元素到一个table中.table 可以用来表示数组 符号表、集合、记录、队列等数据结构哦。也可以表示模块 包、对象如io.read io为模块 read是函数。在lua中来看的话,read是作为io的key 来索引io的。io为table read是key。------ Generated by EmmyLua(https://github.com/EmmyL.原创 2021-11-10 23:43:18 · 334 阅读 · 0 评论 -
lua系统学习03-变量类型
类型基础类型nil空 boolean布尔 number数字 string字符串 userdata自定义类型 function函数 thread线程 table表可以通过print打印出变量的类型任何变量都可以包含任何类型的值nil 所有变量在未赋值前全是为nil 赋值为nil等于将其数据删除。boolean :false true 在lua中不仅是这两种表示方式,在lua中将值false 和nil视作为假将其他所有值 视为真。包括数字0和空字符串也都视为真。number 表示实数 使用双精原创 2021-11-09 22:50:51 · 703 阅读 · 0 评论 -
lua系统学习02-变量
二、变量:全局变量在像Lua、python这种弱脚本语言当中 不需要声明变量类型,而且变量可以未初始化,即使使用了未初始化的变量 也不会出错,未初始化的变量默认未Nil 如 二进制数据0000000想要删除一个变量只要将变量赋值为Nil类型 。在弱语言类型中变量没有特殊的指定,它可以动态的指定任意类型的数据。**命名规范:**字母或者下划线开头的字母 .最好不要使用下划线加大写字母的标示符,因为 Lua 的保留字也是这样的。保留字:以下字符为 Lua 的保留字,不能当作标识符。and bre原创 2021-11-09 22:47:31 · 416 阅读 · 0 评论 -
Lua系统学习01-DOFile加载函数
一。加载外部函数dofile加载外部函数并执行代码示例:------ Generated by EmmyLua(https://github.com/EmmyLua)--- Created by Admin.--- DateTime: 2021/11/8 13:49---print("hello world")dofile("C:\\File\\Lua\\OutSideLua.lua")print(twice(2))外部函数 outSideLuaprint("hello worl.原创 2021-11-09 22:43:30 · 594 阅读 · 0 评论 -
Unity的TransformDirection、Vector3、Point是有什么作用?不同
transform.direction和transformpoint还有transform.vector3 有什么区别?经过测试后,个人觉得没有区别,如若有区别还请网友指点。通过官方手册可以看到 具体描述 transform.direction 它将一个局部坐标转换成一个世界坐标。它只受比例影响。具体解释一下,通这个方法做相机跟随。代码如下首先我们在开始就计算了相机到人物间的向量 叫......原创 2020-02-10 23:43:15 · 2421 阅读 · 0 评论 -
Unity的lookRotation和lookAt的区别理解,是什么意思。
我们追溯两个方法的所在的类,看到lookAt是Transform下的一个含参方法,这个参数指定一个物体对象的transform或transform。position。准确说是一个三维坐标点。代表当前Transform的朝向即rotation的四元素的z轴是面向于所设的参数点。而lookRotation是四元素下的一个方法跟lookat一样有三个重载, 它的z轴朝向跟所设向量参数的方向一致,如何...原创 2020-02-01 10:52:46 · 3757 阅读 · 0 评论 -
关于unity为什么不能使用transform.position.x/y/z的写法以及正确写法分析
首先我们查看position定义(光标position下alt+F12)可以看到以下几点1.position是vector3向量下的一个属性。2.vector向量是结构体 ,结构体是值类型.好的现在来说为什么不能这么写transform.position.x=10;//error首先通过点1 我们知道position是一个属性当我们访问position时 通过get容器 返回了一个自动...原创 2020-01-28 10:57:19 · 2374 阅读 · 0 评论