Unity3D学习笔记(三十):Lua
print("Hello World")
--单行注释
--print("单行注释")
--多行注释
--[[
print("多行注释1")
]]
--[[
print("多行注释2")
--]]
--[[
print("多行注释3")
]]
--变量定义
--C#
--int a = 1;
--Lua
a =
A =
_ =
print(a)
print(A)
print(_) --变量赋值
b = true
print(b)
print(type(b))
b=
print(b)
print(type(b)) --number类型
c =
d = 1.2
print(c)
print(type(c))
print(d)
print(type(d)) --三种打印字符串的方式
e = "Hello World"
f = 'Hello World'
g = [[Hello World]]
print(e, f, g) --..连接字符串
x = ""
y = ""
print(x + y)--加号表示算数运算
print(x .. y) --#计算变量长度
print(#e)
print(#"Hello World")
print(#"你好")--汉字占两个字节
--C# int[] a = new int[]{1, 2, 3};
--Lua的table
a = {, , }
print(a[])
print(type(a))
--创建一个空表
b = {}
--创建一个表,并且对表进行初始化赋值
c = {"string", true, , nil}
--table的访问
print(c[])
--table的修改
c[] =
print(c[])
print(#c)--能算table长度,但不一定是真实长度
--table的添加
c[] =
--table的方法:数组的插入和删除(索引的连续性)
--第一个参剩:表的名字
--第二个参数:插入的内容
--依次向后找,只要找到一个nil的位置就把内容插入进去
table.insert(c, "你好")
print(c[])--结果:你好
--第二个参数:要插入的位置,可以跳跃性的插入
table.insert(c, , "小明")
print(c[])--结果:小明
--从第三个位置的元素开始,后面的元素依次后移
table.insert(c, , "小红")
print(c[])--结果:小红
print(c[])--结果:1
--删除
--删除指定索引的位置的元素,后面的元素依次前移
d = {, , "你好", true}
table.remove(d, )
print(d[])--结果:4
--删除连续索引的最后一个元素
d[] =
table.remove(d)
print(d[])--结果:nil
print(d[])--结果:10
--table的索引
a = {}
a[] =
print(a[]) --把字符串作为一个索引
a["a"] = "nihao"
print(a["a"]) --table可以有0号索引
a[] =
print(a[])
--table可以有负号索引
a[-] =
print(a[-]) print("-----------------")
b = {[] = , , , , , [-] = , ["nihao"] = "你好", key = "不好", c = {, }}
print(b[])
print(b[])--会被覆盖掉
print(b[])
print(b[])
print(b[])
print(b[])
print(b[])
print(b[-])
print(b["nihao"]) --第一种访问字符串为索引的元素
print("-----------------")
print(b["nihao"])
--第二种访问字符串为索引的元素
print(b.nihao)
print(b["key"])
print(b.key)
print(b.c[])
--table.insert(c, 3, "小红")--报错:只能针对数组
--table.remove(c, 2)--报错:只能针对数组 --添加字符串为索引的元素
b["key1"] = "可以"
b.key2 = "不可以"
d = "可不可以"
print(b.key1)
print(b["key2"])
print(b[d]) print(#b)--结果:4,从1号位索引开始算,一旦索引断掉,就不往后面计算 f = {[] = }
print(#f)
--流程控制语句
--C# if(条件){} --Lua
--if语句
--[[
if 条件 then
print("if语句满足,执行")
end
]]-- if true then
print("if语句满足,执行")
end --if else语句
if a then
print("if语句满足,执行")
else
print("if语句不满足,执行")
end --if elseif语句
if a then--一般条件后面才加then关键字
print("if语句满足,执行")
elseif b then--注意elseif是连着的
print("if语句不满足,执行")
end --if elseif else语句
if a then
print("if语句满足,执行")
elseif b then--注意elseif是连着的
print("if语句不满足,执行")
else
print("if语句都不满足,执行")
end
循环控制语句
--循环控制语句
--C# for,while,do while --Lua
--while
a =
while a < do
print(a)
a = a +
end print("-------------") --do while C#条件满足继续执行循?
--repeat 循环体 until 条件 条件满足跳出循环
a =
repeat
print(a)
a = a +
until a < print("-------------") --for 变量定义,条件,每次循环累加值 do 循环体 end
--条件就是一个数,变量 <= 条件,每次累加值可以不写,不写默认为1
--对于循环,有break关键字跳出,但是没有continue关键字
for a = , , do
print(a)
end
--方法
function func3()
func1()
end --方法的定义1 function 方法名(参数) 方法体 end
function func1()
print("func1")
end --方法的定义2 方法名 = function(参数) 方法体 end
func2 = function()
print("func2")
end --方法的调用,先定义再调用
func1()
func2()
func3() print("--------有参数的方法--------") --有参数的方法
func4 = function(a, b)
print(a, b)
end func4()--可以不传参数,按照nil处理
func4()--可以少传
func4(, )
func4(, , )--可以多传,只取前2个 print("--------可变参数的方法--------")
--可变参数的方法,参数位置用...表示是可以传任意的参数
--通过arg来取传入的参数,arg实际就是一表表示的数组
--当调用的时候,把所有传递进来的参数存入到arg中
func5 = function(...)
print(#arg)
for i = , #arg do
print(arg[i])
end
end func5(,,,,,,)
func5(,"nihao",true,,,,false,nil) print("--------带返回值的方法--------")
--带返回值的方法
func6 = function()
return "func6"
end a = func6()
print(func6(), a) print("--------带多个返回值的方法--------")
--带多个返回值的方法
--多个返回值使用多个变量去接收,每个变量之间以逗号区别
--返回值与接收变量可以数量不一致,多退少补
func7 = function()
return "a", true, , false
end r1,r2,r3,r4 = func7() print(func7())
print(r1,r2,r3,r4) func8 = function()
local z = "c"
end func8()
print("z:", z)
类
--类
a = {,,,,,,} --遍历
for i = , #a do
print(a[i])
end for key, value in ipairs(a) do
print("key", key)
print("value", value)
end b = {,,,,[-] = , ["key"] = "key", key1 = true}
--ipairs()这种方式只能比哪里出数值类型
for key, value in ipairs(b) do
print("key", key)
print("value", value)
end
--pairs()这种方式能全部遍历出键和值
for key, value in pairs(b) do
print("key", key)
print("value", value)
end
--lua8
print("开始执行Lua8") local lua8 = {}
lua8.const = function lua8.func1()
print("func1")
end lua8.func2 = function()
print("lua8.func2")
end function lua8.func3()
print("lua8.func3")
end print("结束执行Lua8") return lua8
--lua10
print("开始执行Lua10") local lua8 = {func4 = function() print("func4") end, key = }
lua8.const = function lua8.func1()
print("Lua10.func1")
end lua8.func2 = function()
print("Lua10.func2")
end function lua8.func3()
print("Lua10.func3")
end print("结束执行Lua10") return lua8
Lua11.lua文件,在根目录下的Lua文件夹下
--Lua11
print("开始执行Lua11")
--require("Lua8")
--require('Lua8')
lua10 = require'Lua10'
lua8 = require'Lua8'
--func()
print(lua8.const)
print(lua10.const)
lua8.func3()
lua10.func3()
--package.path 里存储的都是require所能执行的lua的文件路径
--print(package.path)
--package.path = package.path .. ";D:\\LuaProject\\Lua\\?.lua"
--..\\上级目录,.\\文件的当前目录
package.path = package.path .. ";.\\Lua\\?.lua"
print(package.path)
require'Lua11'
tab1 = {"tab1", "", ''}
tab2 = {"tab2", , true}
Set = {__add = function(t1, t2)--__add原方法
for k1, v1 in pairs(t1) do
print(k1, v1)
end
print("--------------")
for k1, v1 in pairs(t2) do
print(k1, v1)
end
return "Set"
end}
setmetatable(tab2, Set)--设置元表,把Set这个表设置成tab1的元表
t = tab1 + tab2
--当两个表进行相加操作时,先判断两个表是否有元表?
--如果两个表都没有元表,两个表不能进行相加操作
--如果两个表任意一个表有元素
--再判断元表内是否有__add的元方法
--如果元表里没有__add的元方法,不会执行,报错
--如果有__add的元方法,那么两个表可以相加
--并且相加的结果,就是__add的返回值
--__add的参数1是加号左边的表,参数2是加号右边的表
print(t)
tab = getmetatable(tab2)
print(tab)
print("--------------")
tab3 = {key = "k1"}
Set1 = {__index = function(t1, key)
print(type(t1))
for k1, v1 in pairs(t1) do
print(k1, v1)
end
print(type(key), key)
return "Set1"
end}
setmetatable(tab3, Set1)
--当你要访问一个键对应值时,先判断这个表中有没有这个键,如果有就返回这个键对应的值
--如果这个表没有这个键,先判断这个表有没有元表
--如果有元表,再判断这个元表有没有__index的元方法
--如果有,访问的值就是这个__index返回的值
--__index里的参数1:表,参数2:要访问的键名
print(tab3.key1)
public float length { get; }//动画播放时长
public float normalizedTime { get; }//动画当前规范化时间,1是动画结尾,0.5是动画中间
public bool IsName(string name);
public bool IsTag(string tag);

public class SkillOverStateBehaviour : StateMachineBehaviour {
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
//PlayerController pc = animator.GetComponent<PlayerController>();//获取动画组件身上的脚本
//pc.atkID = 0;//把脚本里的atkID归零
//animator.SetInteger("skillID", 0);//把animator面板里的skillID归零
animator.SetInteger("skillID", );
}
}
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class PlayerControl : MonoBehaviour
{
Animator anim;
private void Awake()
{
anim = GetComponent<Animator>();
}
private void Start()
{ }
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
AnimatorStateInfo animSta = anim.GetCurrentAnimatorStateInfo();
if (animSta.IsName("skill1") && animSta.normalizedTime > 0.3f)
{
anim.SetInteger("skillID", );
}
else if(animSta.IsName("skill2"))
{
anim.SetInteger("skillID", );
}
else if(animSta.IsName("skill3"))
{
anim.SetInteger("skillID", );
}
else if(animSta.IsName("skill4"))
{
anim.SetInteger("skillID", );
}
else if(animSta.IsName("skill5"))
{
anim.SetInteger("skillID", );
}
else if(animSta.IsName("skill6"))
{
anim.SetInteger("skillID", );
}
else
{
anim.SetInteger("skillID", );
}
}
}
}
Unity3D学习笔记(三十):Lua的更多相关文章
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
- angular学习笔记(三十)-指令(7)-compile和link(2)
继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...
- angular学习笔记(三十)-指令(7)-compile和link(1)
这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...
- angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令
在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...
- angular学习笔记(三十)-指令(5)-link
这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...
- angular学习笔记(三十)-指令(2)-restrice,replace,template
本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...
- angular学习笔记(三十)-指令(1)-概述
之前在 angular学习笔记(十九)-指令修改dom 里面已经简单的提到了angular中的指令,现在来详细的介绍 '指令' 一.指令的创建: dirAppModule.directive('dir ...
- 【Unity 3D】学习笔记三十五:游戏实例——摄像机切换镜头
摄像机切换镜头 在游戏中常常会切换摄像机来观察某一个游戏对象,能够说.在3D游戏开发中,摄像头的切换是不可或缺的. 这次我们学习总结下摄像机怎么切换镜头. 代码: private var Camera ...
- 【Unity 3D】学习笔记三十:游戏元素——游戏地形
游戏地形 在游戏的世界中,必然会有非常多丰富多彩的游戏元素融合当中. 它们种类繁多.作用也不大同样.一般对于游戏元素可分为两种:经经常使用.不经经常使用.经常使用的元素是游戏中比較重要的元素.一般须要 ...
- unity3d学习笔记(十九)--ngui制作3d人物头顶的头像和血条
原地址:http://blog.csdn.net/lzhq1982/article/details/18793479 本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢. htt ...
随机推荐
- WEB应用程序:AJAX全套
概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...
- 20155228 2016-2017-2《Java程序设计》课程总结
20155228 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1 简要内容 了解「Trainer/Trainee」是最好的师生关系,对即将到来的翻转课堂有 ...
- copy on write,代理模式
StringBuilder 内部用了代理的技术实现, 是可变字符串的代理 .net设计模式实例之代理模式(Proxy Pattern) 一.代理模式简介(Brief Introduction) 代理模 ...
- 【Hadoop学习之二】Hadoop伪分布式安装
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 伪分布式就 ...
- Linux基础命令---ifcfg
ifcfg ifcfg是一个简单的脚本替换iconfig命令,它可以设置网络接口的ip地址. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedo ...
- Linux基础命令---添加用户useradd
useradd 创建新的系统用户,useradd指令只能以管理员的身份运行,创建的用户都在“/etc/passwd”文件中.当不加-D参数,useradd指令使用命令列来指定新帐号的设定值and使用系 ...
- 新浪微博 [异常问题] 414 Request-URL Too Large
新浪微博 [异常问题] 414 Request-URL Too Large 浏览器上打开新浪微博,或则日志是返回结果提示:414 Request-URL Too Large原因:因同IP访问微博页面过 ...
- 安装ES6及HEAD插件
1.下载相应npm包 es6地址:https://www.elastic.co/downloads/elasticsearch head插件地址:https://github.com/mobz/ela ...
- windows与linux ping 显示的ip不一样
DNS修改了一下域名对应的IP后,域名不能访问了,我在windows下ping一下域名,IP没有变过来,还是老的IP.我在linux下又ping了一下域名,是换过了的.这个问题是由windows下的本 ...
- MySQL笔记(七)远程连接MySQL
mysql 默认只允许 localhost 连接,因此在远程连接服务器上的 mysql 之前,需要做一些设置.在没有设置前,默认是下面的状况,mysql 只能由 localhost(127.0.0.1 ...