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 ...
随机推荐
- Sitecore CMS中配置项目图标
在Sitecore中,图标通常用于通过各种不同的模板类型快速区分项目.文章可能使用红色图标,而列表页面可能使用蓝色.项目上设置的图标可以在内容树中看到,也可以在选择项目时在内容编辑器的顶部看到. 从功 ...
- 20165305 实验一: Java开发环境的熟悉
实验1-1 建立"自己学号exp1"的目录. 在"自己学号exp1"目录下建立src,bin等目录. javac,java的执行在"自己学号exp1& ...
- locust 的使用
Contents Locust这一款开源性能测试工具.然而,当前在网络上针对Locust的教程极少,不管是中文还是英文,基本都是介绍安装方法和简单的测试案例演示,但对于较复杂测试场景的案例演示却基本没 ...
- intelj idea安装和配置
1|0优势 intellij idea 是目前公认的java最好的开发工具之一,商业版的IntelliJ应该包含了对 HTML5.CSS3.SASS.LESS.JavaScript.CoffeeScr ...
- maven项目没有src/test/java和src/test/resources目录问题解决
新建maven项目,如下图示: 只有src/main/java和src/main/resources两个目录,而没有src/test/java和src/test/resources,于是第一反应是没有 ...
- Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法
一.简述 先简单介绍一下模态与非模态对话框. 模态对话框 简单一点讲就是在弹出模态对话框时,除了该对话框整个应用程序窗口都无法接受用户响应,处于等待状态,直到模态对话框被关闭.这时一般需要点击对话框中 ...
- Oracle 数据库实现数据合并:merge
1.使用update进行数据更新 1)最简单的更新 update tablea a set a.price=1.00 2)带条件的数据更新 update tablea a set a.price = ...
- 详解:PHP加速器配置神器opcache
什么是opcode? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode).Opcode cache的目地是避免重复编译,减少CP ...
- 数据库 SQL 优化大总结之:百万级数据库优化方案
网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...
- mysql01
CREATE TABLE `student`( `studentNo` INT (4) NOT NULL PRIMARY KEY COMMENT '学号', `loginPwd` VARCHAR(20 ...