调试:

在MonoDevelop里可以断点调试,注意绑定unity进程

使用Debug.Log()打印信息

创建游戏对象:

GameObject test = GameObject.CreatePrimitive(PrimitiveType.Cube);

GameObject t1 = instantiate(Resources.Load(“test”)) as GameObject;

移动:

test.transform.position = new Vector3(0,0,0);

float translation = Time.deltaTime * 10; //使用这个移动的会慢一些

transform.Translate(translation,0,0);  // 不指定的,移动的就是脚本绑定的游戏对象

test = GameObject.Find ("Sphere");

test.transform.Translate(translation,0,0); //移动的就是那个球了

获取游戏对象:

GameObject.Find(“testname”);

获取一组:

public GameObject[] test; //先声明,此处不能实例化

test = GameObject.FindGameObjectsWithTag ("try"); //tag名可以自定义,在u3d里加好

//此时获取的是一组,可以写在Start()里面

test[1].transform.Translate(translation,0,0); //之后就可以使用了,如在update里

获取一个:

GameObject.FindGameObjectWithTag ("try");

数组:(声明--数组实例化--数组元素实例化)
声明: private Skill[] _skill;
数组实例化:_skill=new Skill[Enum.GetValues(typeof(SkillName)).Length];
元素实例化:for (int cnt = 0; cnt < _skill.Length; cnt++)
               _skill[cnt] = new Skill();
①另外可以声明数组后,利用函数返回值进行数组实例化,而且此时
      GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
②使用方式可以如:
      foreach (GameObject enemy in go) {   }
③数组属于Array类,本身也有一些属性,如_skill.Length;

④函数传递数组时,形参用(Skill[] new_skill)即可(内部用new_skill.Length获取长度)。改变函数内形参的值,实参数组也会跟着改变。
 
2.无论是数组还是容器亦或者其它变量,都可以在MonoBehaviour子类中以public权限声明后,不在脚本内实例化,而是在Unity3D软件的检视面板中赋值实现实例化。
  对于GameObject,Texture2D等类型的变量(或数组以及容器),一般都是在检视面板赋值。(但GO类型也可以用寻找GO等函数实例化,Texture2D类型则可以用C#硬盘读取图片的方式赋值)

gameObject.GetComponent<组件名>(); //获取组件

gameObject.AddComonpent("组件名");  //添加组件

消息传递:

//cube1是cube的子对象

//cube的脚本里有void sayHi (string str) {Debug.Log(str + "@@@@");}

//cube1的脚本里有void sayHello(string str) {Debug.Log(str + "!!!!");}

①向上发消息:

cube1.SendMessageUpwards ("sayHi","hello"); //函数名+参数

②向自己的脚本里的函数发消息:

cube1.SendMessage ("sayHello","Hello");

③向下发消息:

temp.BroadcastMessage ("sayHello","Hello"); //temp是cube,这个写在cube脚本中

//向GameObject发送一条消息,则该GameObject上挂载的所有脚本都会接收到该条消息

预设prefab:

是一种资源类型,可被重复使用的游戏对象。它可以被置入多个场景中,又或者能够在一个场景中被多次置入。当你在一个场景中增加一个Prefabs,你就实例化了一个Prefabs。所有Prefabs实例都是Prefab的克隆,只要Prefabs原型发生改变,所有的Prefabs实例都会产生变化。

创建:

将Hierarchy中的游戏对象拖到Asset下;在project点create,然后再拖对象过来。

EG:

//脚本绑定在cube上,为cube添加Box collider,Is trigger指接受碰撞,为小球Sphere增//加Rigidbody,使能够下落,然后增加Sphere Collider.如果此时将cube勾去Mesh Render,//即会变透明,下面的代码即可显示:小球下落,碰撞,重回原处,下落。

//注意:碰撞双方不能都是Mesh Collider,会检测不到碰撞,如果一定要,勾选其中一个的Convex

public GameObject prefab;

void OnTriggerEnter(Collider col) {

//注意此处第一个小球的名字为Sphere,而后来克隆的小球名字都为Sphere(Clone)

if (col.gameObject.name == "Sphere" || col.gameObject.name == "Sphere(Clone)"){

Destroy(col.gameObject);//销毁小球

}

prefab = Instantiate (Resources.Load("Sphere")) as GameObject;

}//实例化小球预设,我们从resources文件夹下载入预设

Unity 内置GUI的特点:将控件显示,事件响应都放在OnGUI函数中

实际,这种方式不够灵活且执行效率低,一般是采用第3方的NGUI插件来制作游戏界面

GUI.Label://没有框的

GUI.Label(new Rect(300,40,40,40),"你好");//X,Y,width,height,第2个参数显示文本内容

GUI.Button:

if (GUI.Button(new Rect(300,40,40,40),"你好")){...}

//通过在OnGUI里面判断GUI.Button是否返回true,显示是否按下

GUI.TetxField:

txt=GUI.TextField(new Rect(300,40,40,40),txt,10);

//第2个参数表示输入框显示的内容,最后一个参数表示最大字符数

控件:

public float a,b,c,d;

void OnGUI() {

a = GUI.VerticalSlider (new Rect(0,50,200,200),a,0f,100f); //可以滑动的。a表示当前

b = GUI.HorizontalSlider (new Rect(500,60,200,200),b,0f,100f);//最小和最大

c = GUI.VerticalScrollbar (new Rect(0,100,200,200),c,100f,0f,100f);//第三个是size

d = GUI.HorizontalScrollbar (new Rect(500,100,200,200),b,100f,0f,100f);//不能滑

}

//大部分GUI控件都可以通过GUILayout绘制,自动计算位置

GUILayout.Button ("wooo");

脚本控制对象的变换:

①obj.transfrom.position = new Vector3(x,x,x) //这个是移动到指定位置

② obj.transform.Rotate(new Vector3(x,x,x))

③obj.transform.Translate(new Vector3(x,x,x)) //这个是平移

④obj.transform.localScale = new Vector3(x,x,x) //改变大小

注意:Vector3是指三维空间的向量,方向:

Vector3.left,Vector3.right x轴方向Vector3.up,Vector3.down y轴方向

Vector3.forward,Vector3.back z轴方向

常用工具类:

Time类:Time.time:

游戏开始到现在的游戏时间:Time.deltaTime:

update方法中完成上一帧消耗的时间:

Time.fixedTime: FixedUpdate方法中固定消耗时间的综合(可以通过Edit->project setting->Time去设置)

Random.Range(min,max):

返回最大和最小之间的一个数(包括最小值,不包括最大值)

Mathf类:Mathf.abs,Mathf.Sin()....

unity3d基础02的更多相关文章

  1. javascript基础02

    javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...

  2. javaSE基础02

    javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...

  3. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

  4. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  5. 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用

    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...

  6. 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字

    084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...

  7. 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法

    083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...

  8. 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法

    082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...

  9. day32-线程基础02

    线程基础02 3.继承Thread和实现Runnable的区别 从java的设计来看,通过继承Thread或者实现Runnable接口本身来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thre ...

随机推荐

  1. Linux源码安装mysql步骤

    创建文件夹: mkdir  /usr/local/webserver 安装必要依赖包      yum -y install gcc gcc-c++ make ncurses-devel安装cmake ...

  2. 反编译工具reflector破解方法

    文件下载:http://files.cnblogs.com/lori/Red.Gate.Reflector7.6.rar 破解方法: 1. 断网2. 运行.NET Reflector,点击Help - ...

  3. 解决 placeholder 垂直不居中,偏上的问题

    解决 placeholder 垂直不居中,偏上的问题 安卓浏览器显示placeholder 垂直不居中,而iphone没问题,搜了一下答案,解决方法是把input的line-height去掉就行 参考 ...

  4. WAMP 403 Forbidden禁止访问 的解决办法

    修改httpd.conf文件 # onlineoffline tag - don't remove Require local To # onlineoffline tag - don't remov ...

  5. sina 行情api

    http://blog.csdn.net/simon803/article/details/7784682

  6. Qt之QPauseAnimation

    简述 QPauseAnimation类为QSequentialAnimationGroup提供了一个暂停. 如果你想为QSequentialAnimationGroup动画之间添加延迟,可以插入一个Q ...

  7. Windows上模拟Linux环境

    有两种方法,一直是 MinGW http://jingyan.baidu.com/article/8cdccae985cf7c315413cd35.html 另外可以用 cygwin http://j ...

  8. NoSQL你知多少?

    1.NoSQL是什么? NoSQL 是 Not Only SQL 的缩写,意即"不仅仅是SQL"的意思,泛指非关系型的数据库.强调Key-Value Stores和文档数据库的优点 ...

  9. fr

    8.3 credit sales(bad debt , ar) method1:direct write off method2:allowance method for bad debt allow ...

  10. 【转】数据库范式(1NF 2NF 3NF BCNF)详解一

    以下内容转自:http://jacki6.iteye.com/blog/774866 --------------------------------------------分割线---------- ...