Unity(2) 脚本简单操作
来源:互联网 发布:公司取名软件 破解版 编辑:程序博客网 时间:2024/05/20 15:59
生命周期(按顺序排列)
Awake():脚本唤醒,系统执行的第一个方法,在脚本声明周期内只执行一次,初始化一般可以在这里
Start():Awake之后,Update之前,只执行一次,一般在awake中初始化比这里好,
Update():每帧调用一次,逻辑更新
LateUpdate():在Update之后调用,每帧调用一次,一般摄像机在这里更新
FixedUpdate():固定(时间)更新,Eidt->Project Settings->Time中设置更新频率,默认0.02s,一般用于刚体物理更新,不受帧时间影响
OnDestroy():脚本销毁时调用
OnGUI():绘制GUI,每帧调用
脚本操作对象
创建对象:
1 Hierarchy中创建对象,然后拖动到Scene中
2使用代码动态创建,销毁对象
using UnityEngine;using System.Collections;public class TCScript : MonoBehaviour {GameObject objCube;void OnGUI(){if(GUILayout.Button("CreatButton",GUILayout.Height(50))){//创建立方体对象 js实现objCube = GameObject.CreatePrimitive(PrimitiveType.Cube);//给立方体增加一组件(这里为刚体)objCube.AddComponent("Rigidbody");//设置对象名objCube.name = "Cube";//设置材质颜色objCube.renderer.material.color = Color.blue;//设置位置objCube.transform.position = new Vector3(0.0f,10.0f,0.0f);}if(GUILayout.Button("DestroyButton",GUILayout.Height(50))){Destroy(objCube);//马上销毁对象}}}然后把这个cs脚本拖到默认的摄像机上就可以(似乎随便绑到摄像机不太合理,暂时不管,以后研究ui都绑在哪,绑在某个物体上应该就更不合适了)
获取对象:
1通过对象名获取
获取上面创建的Cube的方法
GameObject obja;void getObj(){ obja = GameObject.Find("Cube");}如果获取对象下的子对象用(重复命名问题如何解决?使用find只会找到第一个?)
objb = GameObject.Find("Cube/Cube");
2通过标签获取(第一个使用这个标签的)对象
标签的设置:
Hierarchy中新建一个Cube,在Inspector中可以设置标签
使用Add Tag可以设置新标签
也可以在Edit->Project setting->Tag and Layers中查看标签
按标签获取对象
GameObject obj = GameObject.FindWithTag("TagName");
如果多个对象使用同一标签,那么上面方法获取的是第一个设置为TagName的对象
3通过标签获取同一标签的多个对象的数组
GameObject obj = GameObject.FindGameObjectsWithTag("TagName");
绑定对象:
1拖动实现
把Project中的脚本文件直接拖给Hier archy里面的对象,在Inspector中可以查看对象绑定的脚本,并可对其执行删除等操作
2代码动态实现
GameObject obj = GameObject.Find("Cube");obj.AddComponent("TCScript");//添加脚本Renderer render = obj.GetComponent("Renderer");//获取渲染器组件
对象克隆
操作对象旋转平移缩放
objCube.transform.position = new Vector3(0.0f,10.0f,0.0f);//设置物体位置objCube.transform.position = Vector3(0.0f,10.0f,0.0f);//设置物体位置objCube.transform.Translate(Vector3.forward*Time.deltaTime*speed);//向(物体)前方平移objCube.transform.Rotate(Vector3.up*Time.deltaTime*speed);//沿y轴旋转objCube.transform.localScale = Vector3(0.0f,10.0f,0.0f)//沿y轴放大
脚本间通信
脚本与子对象,自身对象,父类对象的通信
不同类型脚本间相互调用(c#与js)
CSTest csscript = obj.GetComponent<CSTest>;csscript.functionA();
js调用js脚本(JSTest.js)
var jsscript: JSTest = obj.GetComponent("JSTest");jsscript.functionA();
c#调用js脚本(JSTest.js)
JSTest jsscript = (JSTest)GetComponent("JSTest");jsscript.functionA();
js调用c#脚本(CSTest.cs)
var csscript = this.GetComponent("CSTest");csscript.functionA();
- Unity(2) 脚本简单操作
- Unity简单脚本
- Unity基础2_脚本操作对象
- Unity 2D精灵编辑器简单操作
- Unity脚本:简单的角色换装Demo
- unity中简单的js脚本
- Unity简单修改UV的动画脚本
- unity简单自由漫游摄像机控制脚本
- Unity 2d精灵在编辑器中的一些简单操作
- 【个人Unity笔记】{基础} 2D小游戏一个简单的自动刷怪脚本
- Unity VR简单操作原理方法
- Unity脚本
- unity 脚本
- Unity-脚本
- 关于Unity内部脚本如何工作的简单概览
- Unity简单的实现动画三连击脚本
- Unity脚本开发之对象的基本操作
- Unity中的Undo操作如何对脚本起作用
- onContextItemSelected 与 onMenuItemSelected 的那些事
- C#中String.Format格式说明(如字符串补0 string s="a";s.PadLeft(2,'0'))
- Vim命令合集
- Unity3D使用碰撞体做触发器实现简单的自动开门
- 钟贺福:可穿戴设备即将爆发
- Unity(2) 脚本简单操作
- 拉萨-香港-海口-丽江4日游攻略
- Hive自定义函数
- Could not create the view: An unexpected exception was thrown. 电脑突然断电,myeclipse非正常关闭,出现错误
- APK混淆打包
- exadata oracle ssh登陆不了和su oracle 报incorrect password 解决办法
- Android_BaseAdapter基础延伸_141026
- IOCP 第二篇
- [leetcode] wordBreak II