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 ...
随机推荐
- Shell Necklace (dp递推改cdq分治 + fft)
首先读出题意,然后发现这是一道DP,我们可以获得递推式为 然后就知道,不行啊,时间复杂度为O(n2),然后又可以根据递推式看出这里面可以拆解成多项式乘法,但是即使用了fft,我们还需要做n次多项式乘法 ...
- 利用QPainter绘制散点图
[1]实例代码 (1)代码目录结构(备注:QtCreator默认步骤新建工程) (2)工程pro文件 QT += core gui greaterThan(QT_MAJOR_VERSION, ): Q ...
- 输入一串字符,检查是否可以组成friend
"""输入一串字符,检查是否可以组成friend""" from collections import Counter def foo(nu ...
- nodejs typescript怎么发送get、post请求,如何获取网易云通信token
nodejs typescript怎么发送get.post请求,如何获取网易云通信token yarn add jshashesyarn add superagent检查语法yarn lint==== ...
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
java实现 HTTP/HTTPS请求绕过证书检测代码实现 1.开发需求 需要实现在服务端发起HTTP/HTTPS请求,访问其他程序资源. 2.URLConnection和HTTPClient的比较 ...
- Anaconda下载及安装及查看安装的Python库用法
Anaconda下载及安装及查看安装的Python库用法 Anaconda 是一个用于科学计算的 Python 发行版,提供了包管理与环境管理的功能.Anaconda 利用 conda 来进行 pac ...
- python smtplib 发送邮件简单介绍
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式python的smtplib提供了一种很 ...
- 3D模型文字动画
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Markdown语法学习(Github/git.oschina.net上README.md书写规范)(转)
晚上在更新git.oschina.net项目时,突然想知道README.md后缀的来源,于是搜了下,发现README.md使用了一种小标记语言Markdown的语法,于是简单的看了一个,特转载如下,为 ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 828D) - 贪心
Arkady needs your help again! This time he decided to build his own high-speed Internet exchange poi ...