程序基础
if 语句:当你遇到一个路口,做一个选择,你往左还是往右走。
if (a>b)
{
//往左走
}
else
{
//往右走
}
a>b a<=b
for语句:当你遇到一个转盘,你转几圈后再继续往前。
for (i=0;i<10;i++)
{
//循环10次,i从0到9
}
a>b(a大于b),a==b(a等于b),a<=b(a小于等于b)
PressMouse.js
Unity3D的类基础知识
Cube
Transform
PressMouse
Renderer
1. 变量定义方法:
var 变量名 : 类型 (公有变量)
private var 变量名 : 类型(私有变量)
(公有变量可以从参数面板中观察到它的值,
可以用于观察调试)
2. 函数定义方法:
function 函数名(变量名:类型)
{
//函数
}
3. 常用内置函数
function Start()
{
//开始运行时仅运行一次,可用于初始化变量
}
function Update()
{
//每隔1/帧率的时间运行一次,不断重复
//Time.deltaTime=1/帧率
}
function OnMouseDown()
{
//鼠标在这个物体上按下时,触发运行一次
}
function OnMouseUp()
{
//鼠标在这个物体上放开时,触发运行一次
}
var pressflag : boolean;
private var times : float;
function OnMouseDown ()
{
pressflag=true;
times=0;
}
function OnMouseUp ()
{
pressflag=false;
times=0;
}
function Start ()
{
pressflag=false;
}
function Update ()
{
if (pressflag)
{
times=times+Time.deltaTime;
if (times>=2)
{
transform.position=Vector3.zero;
}
}
}
Cube1
Transform
PressMouse1
Renderer
Cube2
Transform
Renderer
Unity3D物体相互访问
1 2
PressMouse2
var transOb2 : Transform;
var pressM2 : PressMouse2;
function Start ()
{
gameOb1=gameObject;
transOb1=transform;
transOb1=GetComponent("Transform");
transOb2=GameObject.Find("Cube2").transform;
transOb2=GameObject.Find("Cube2").GetComponent("Transform");
pressM2=GameObject.Find("Cube2").GetComponent("PressMouse2");
}
var transOb1 : Transform;
var gameOb1 : GameObject;
MonoBehaviour
Unity3d的输入
function Update ()
{
if (Input.GetKey(KeyCode.Mouse0))
{
//鼠标左键持续按下时
}
if (Input.GetKeyDown(KeyCode.Space))
{
//按下键盘空格的一瞬间
}
if (Input.GetAxis ("Horizontal")!=0)
{
//按下A/D/LeftArrow/RightArrow
}
if (Input.GetAxis ("Vertical")!=0)
{
//按下W/S/ArrowUp/ArrowDown
}
}
向量的基本知识
Vector3类型的变量,既可以代
位置,也可以代表向量。
var A : Vector3;
var B : Vector3;
var C : Vector3;
var pos1 : Vector3;
var pos2 : Vector3;
var pos3 : Vector3;
function Start ()
{
pos1=Vector3(0,0,0);
pos2=Vector3(1,1,1);
pos3=Vector3(2,3,4);
A=pos2-pos1;
B=pos3-pos2;
C=A+B;
}
pos1
pos2
pos3
向量A
向量B
向量C
空间坐标系
看左边的图,相对于相机而言,有一个自己的上下左右前
后,称为相机的局坐标,以物体自己的轴心为(0,0,0)点。
对于整个场景来说,那个白色cube所在的位置就是整个场
景的(0,0,0)点,包括相机在内的所有物体都有一个相对于零点
的全局坐标。
function Start (){
transform.position = Vector3(1,1,1);
var localPos = transform.localPosition;
}
在参数面板中的Transform中的Position,还有Rotation
和Scale都是相对于父物体的局坐标的参数。没父物体的时候,
既等同于全局坐标。
以transform为零点的局坐标Vector3(1,1,1)转换成全局坐标:
transform.TransformPoint(Vector3(1,1,1));
//其中transform.position代表全局坐标
//localPosition代表在它的父物体的局坐标中它所处的位置
数组的使用
var indexes : int[]; //indexes是一个int数组,用来记录序号
var positions : Vector3[]; //positions是一个Vector3数组,用来记录位置
var array1 : Array; //array1是一个js的Array数组,用来记录各种东西
function Start ()
{
indexes = new int[10]; //int和Vector3这样的数组是builtin arrays内建数组
indexes[0]=1; //内建数组的速度非常的快,只是不能动态扩展数组长度
positions = new Vector3[10];
positions[1]=Vector3(1,1,1);
array1 = new Array(10); //这是给Array数组分配空间,用[10]或者(10)皆可
array1.Add(1); //添加一个元素
array1.Add(Vector3(1,1,1)); //再添加一个元素
Debug.Log(array1.length); //array1的长度为12,它可以自由改变长度,但速度慢些
}
数组和For语句配合起来,对整个数组进行遍历
for (i=0;i