第六讲 Unity脚本概览

合集下载

Unity3D一些比较基本的脚本及组件(C#)

Unity3D一些比较基本的脚本及组件(C#)

Unity3D⼀些⽐较基本的脚本及组件(C#)通过代码创造图形//创建顶点,创建序列,创建⽹格,然后把⽹格赋给⽹格序列器//draw a trianglevoid Start () {Vector3[] vs = new Vector3[3];vs[0] = new Vector3(0,0,0);vs[1] = new Vector3(1,0,0);vs[2] = new Vector3(0,1,0);int[ts] = new int[3];ts[0] = 0;ts[1] = 1;ts[2] = 2; //要注意顺序,要⽤左⼿系,法线向外,拇指向外Mesh mesh = new Mesh();GetComponet<MeshFilter>().mesh = mesh;mesh.vertices = vs; // vertices⾄⾼点mesh.triangles = ts;}///* */////draw a triangle程序封装代码public GameObject Create Triangle(){GameObject obj = new GameObject(“Triangle”);MeshFilter mf = obj.AddComponet<MeshFilter>();obj.AddComponent<MeshRender>();Mesh mesh = new Mesh();mesh.vertices = nes[]{new Vector3(0,0,0);new Vector3(3,0,0);new Vector3(0,3,0);};mesh.triangles = new[]{0,2,1//不⽤分号,初始化系,直接把初始值放进去};mf.mesh = mesh;return obj;}Camera 的性质与使⽤public CameraClearFlags clearFlags; //clearFlags是相机清除表识public ColorbackgroundColor; //给定他的颜⾊,背景⾊,只有单⾊才起作⽤public int cullingMask; //提出掩码public class chapter6 : MonoBehaviour{public GameObject cube;void Start(){ber = 9; //把cube设置在第9层Camera cam = this.GetComponet<Camera>()’cam.clearFlags = CameraClearFlags.SolidColor;cam.backgroundColor = new Vector3(1,0,0,0); //表⽰设置颜⾊cam.cullingMask = 9; //表⽰第9层的都不会被渲染出来,也就是说cube不会显⽰出来}}//CameraClearFlags是⼀个枚举类型,有以下四个成员:solidColor 表⽰⽤backgroundColor所制定的填充背景skybox 表⽰天空盒,模拟天空效果填充Depth 只是清除深度缓存,保留上⼀帧所使⽤的颜⾊Nothing 不进⾏背景清除,这种情况在游戏和模拟应⽤中⽐较少⽤public bool orthographic;//⽤于读取和设定相机的投影⽅式,如果为true则表⽰是正交投影,否则为透视投影;正交投影可⽤于UI和2D开发public float orthographicSize; //⽤以指定正交投影的视景体的垂直⽅向尺⼨的⼀半public Rect rect; //相机对应的视⾓⼝的位置和⼤⼩,rect以单位化形式制定相机视⼝在屏幕中的位置和⼤⼩,位置⼤⼩取值范围为0~1,满屏为1Camera main = this.gameObject.GetComponet<Camera>();this.gameObject.SetActive(false);Camera cam0 = camGO0.AddComponet<Camera>();cam0.orthographic = true;cam0.transform.position = main.transform.position;cam0.transform.rotation = main.transform. rotation;cam0.orthographicSize = 2.0f; //指物体渲染后显⽰的⼤⼩远近,数值越⼤,相机视⼝越靠近该物体,从⽽该物体显⽰出来的更加⼤cam0.rect = new Rect(0f,0f, 0.5f, 0.5f); //前两个参数是camera的位置,后⾯两个参数设置相机⼤⼩(0.5f,0.5f)表⽰占x轴的⼆分之⼀,y轴的⼆分之⼀,所以总共占渲染窗⼝的四分之⼀Camera cam1 = camGO1.AddComponet<Camera>();cam1.orthographic = true;cam1.transform.position = main.transform.position;cam1.transform.rotation = main.transform. rotation;cam1.orthographicSize = 7.0f;cam1.rect = new Rect(0.5f, 0.5f, 0.5f, 0.5f);}Material,Shader,Texture(材质,着⾊器,纹理)光照、纹理等让物体更加的真实。

Unity脚本入门[优质ppt]

Unity脚本入门[优质ppt]
������ 创建一个Cube,缩放x,y,z为”5,0.1,5”,它现在看起 来应该是一个大平板.在层次视图(Hierarchy Viewbe1运动起来,就需要加入脚本 。 通过控制主相机的位置来实现,要做到这一点,我们现在 要写一个脚本来读取键盘的输入.然后把脚本和相机链 接起来。
首先创建一个空脚本. 选择”Assets->Create->Javascript”并在项目面板重 命名为”Move1”.
双击Move1脚本,它将打开,并且默认包含有Update() 函数,我们将我们编写的代码插入这个函数,任何加入 Update()函数中的代码都将在每一帧(frame)执行一次.
二、第一个脚本
二、第一个脚本
我们的第一个脚本是在一个简单的游戏场景中走动 .
第一步:设置场景,即在游戏场景中添加地面和游 戏对象。
地面可由一个扁的Cube代替.
创建一个Cube,缩放x,y,z为”5,0.1,5”,它现在看起 来应该是一个大平板.在层次视图(Hierarchy View)中重 命名为”Plane”.
我们总是需要脚本代码中暴露的变量,以便我们在检视面板中设置数值. 为了演示连接变量的概念,我们建立一个跟随玩家(主相机)的聚光灯.
添加一个聚光灯到场景视图,移动它靠近其他游戏对象.
创建一个JavaScript脚本并重命名为Follow. 我们希望主相机的地方有个聚光灯所照耀.事实上,Unity中有个函数能做到 这一点. transform.LookAt(). 我们可以使用一个暴露变量(Transform类型)。 Follow.js脚本如下:
二、第一个脚本
打开脚本Move1并输入上面的代码,注意大小写. 现在我们第一个脚本写完了,怎么让Unity的游戏对象具 有这个脚本行为呢?

Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画

Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画

Unity3D之Mecanim动画系统学习笔记(六):使⽤脚本控制动画控制⼈物动画播放这⾥我重新弄了⼀个简单的场景和新的Animator Controller来作为⽰例。

下⾯先看看Animator Controller的配置:⼈物在站⽴状态只能进⼊⾛路,⾛路只能进⼊奔跑或返回站⽴,奔跑只能进⼊跳跃或返回⾛路,跳跃则只能返回奔跑。

参数⽅⾯为两个参数:Float类型的moveSpeed;Trigger类型的Jump;连线直接的转换条件为:moveSpeed⼤于0.1进⼊⾛路,⾛路moveSpeed⼤于0.9进⼊奔跑⼩于0.1返回站⽴,奔跑moveSpeed⼩于0.9返回⾛路,Jump被触发则进⼊跳跃;为⼈物添加Animator组件并绑定上⾯的Animator Controller⽂件,同时绑定下⾯的脚本:1using UnityEngine;2using System.Collections;34public class TestAnim : MonoBehaviour5 {6//将名称转换为哈希值可以提⾼索引的速度7private int moveSpeed = Animator.StringToHash("moveSpeed");8private int jump = Animator.StringToHash("Jump");9private int runState = Animator.StringToHash("Base Layer.Run");1011private Animator _animator;1213void Start()14 {15 _animator = this.GetComponent<Animator>();16 }1718void Update()19 {20float speed = Input.GetAxis("Vertical");21 _animator.SetFloat(moveSpeed, speed);2223//获取动画的当前状态24 AnimatorStateInfo info = _animator.GetCurrentAnimatorStateInfo(0);25//跳跃除了要按下空格键外, 还需要处于奔跑状态才⾏, 否则按下空格键时就会标记 Jump, ⼀进⼊奔跑就马上跳跃26if(Input.GetKeyDown(KeyCode.Space) && info.fullPathHash == runState)27 {28 _animator.SetTrigger(jump);29 }30 }31 }State Machine Behavior在Unity5.0中,我们可以给Animator Controller中的每个State添加脚本了,类似于专门⽤于GameObject的MonoBehavior,State可以添加State Machine Behavior,我们打开任意的Animator Controller,就可以在Inspector窗⼝发现添加脚本的按钮:除了State外,我们还可以在层上添加,层可以看做包含了整个State的⼀个⼤State:我们可以添加⼀个脚本看看,下⾯是我添加了注释的State Machine Behavior脚本的标准形式:1using UnityEngine;2using System.Collections;34public class StateScript : StateMachineBehaviour5 {6// OnStateEnter is called before OnStateEnter is called on any state inside this state machine7override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)8 {9//进⼊当前状态时会被调⽤10 }1112// OnStateUpdate is called before OnStateUpdate is called on any state inside this state machine13override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)14 {15//进⼊当前状态的每帧会被调⽤16 }1718// OnStateExit is called before OnStateExit is called on any state inside this state machine19override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)20 {21//退出当前状态时会被调⽤22 }2324// OnStateMove is called before OnStateMove is called on any state inside this state machine25override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)26 {27 }2829// OnStateIK is called before OnStateIK is called on any state inside this state machine30override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)31 {32 }3334// OnStateMachineEnter is called when entering a statemachine via its Entry Node35override public void OnStateMachineEnter(Animator animator, int stateMachinePathHash)36 {37 }3839// OnStateMachineExit is called when exiting a statemachine via its Exit Node40override public void OnStateMachineExit(Animator animator, int stateMachinePathHash)41 {42 }43 }通过使⽤State Machine Behaviour我们可以更加⽅便的在特定的时间点触发⼀些我们需要的事件,但是需要注意的是,我们⼀般给State Machine Behaviour赋值⼀些场景的对象不是直接在Inspector⾯板⾥拖拽⽽是通过Animator的GetBehavior⽅法获取到指定的State Machine Behaviour的实例后通过脚本进⾏赋值的。

Unity脚本及生命周期

Unity脚本及生命周期

Unity脚本及⽣命周期Unity脚本:1.1继承MonoBehaviour类Unity中所有挂在到游戏对象上的脚本中的类必须继承MonoBehaviour类(直接或者间接)。

MonoBehaviour类中定义了各种回调⽅法。

Public class NewMonoBehaviourScript :MonoBehaviour{...}1.2类名字必须匹配⽂件名C#脚本中类名需要⼿动编写,⽽且类名还必须和⽂件名相同,否则当脚本挂载到游戏对象时,在控制台会报错。

1.3Unity调试在Unity中,可以使⽤print()和Debug.Log()打印调试信息。

但print()只能在Mono类中使⽤,所有⼀般情况下最好使⽤Debug.Log(),它和print()效果⼀样,但它可以在各处使⽤。

同时也可以使⽤Debug.Log.Warning()和Debug.LogError()收集警告和错误信息。

Debug.Break()设置断点。

如果想查看特定情况发⽣时对象属性的变化时,⽤断点可以快速地完成。

2.脚本⽣命周期创建UnityC#脚本时,脚本中会⾃动创建两个函数,Start()与Update(),这就是Unity的⽣命周期函数。

⽣命周期函数执⾏顺序:Awake()——>OnEnable()——>Start()——>FixedUpdate()——>Update()——>LateUpdate()——>OnGUI()——>OnDisable()——>OnDestroy()3.⼏何属性类Unity中的⼏何属性类Transform主要是⽤来描述每⼀个游戏对象的⼏何属性的,包括:位置、旋转和缩放⽐例等。

4.对游戏对象的操作4.1通过名字或标签获取游戏对象Unity 脚本中可以使⽤FindWithTag⽅法和Find⽅法来获取游戏对象。

FindWithTag⽅法:获取指定标签的游戏对象。

unity 大纲

unity 大纲

unity 大纲
Unity是一款游戏开发引擎,能够轻松地创建各种类型的游戏和交互式应用程序。

下面是其主要大纲:
1. 安装和使用Unity引擎
- Unity的安装和配置
- Unity编辑器介绍
- Unity基础概念
2. 2D游戏制作
- 创建2D游戏场景
- Unity中的2D物理引擎
- 2D动画制作
- 2D游戏音效的实现
3. 3D游戏制作
- 创建3D游戏场景
- Unity中的3D物理引擎
- 3D模型导入和处理
- 3D游戏动画
4. 玩家控制和人工智能
- 玩家控制和输入处理
- 游戏相机控制
- NPC人工智能
5. 游戏环境和效果
- 游戏场景中的光照和阴影
- 粒子系统制作
- 后期处理和特效
6. 游戏发布与测试
- 游戏适配和发布
- 测试和调试游戏
Unity是一个非常好的游戏开发引擎,具有很强的易用性和扩展性。

通过学习这些大纲,您可以轻松地创建各种类型的游戏,从简单的2D游戏到复杂的3D游戏,甚至是虚拟现实和增强现实应用程序。

unity3d游戏开发之小总结脚本入门之数据类型和基本运算

unity3d游戏开发之小总结脚本入门之数据类型和基本运算

1.在工程视图建立各个分类的文件夹,让以后可以方便查找需要的文件基本文件夹都有:Scenes(存放.unity的文件)pic/Img(存放图片)Materials(材质球)Scripts(存放脚本)Prefabs(存放预设体)Sounds(存放声音)层次视图里随着对象的增加我们要几个空的游戏对象来存放同一类的对象,方便查找和管理。

下午的时候老师给简单介绍了脚本入门——数据类型,基本运算数据的类型都有整型:常用的就是int类型浮点型布尔(bool)类型:值只有true或falsechar字符类型:char类型的自变量是单用引号括起来的。

如'A'如果把字符A扩在双引号内,编译器会把它看做是字符串,从而产生错误。

引用类型(Object类型和字符串类型)object:所有类型都是从它派生而来的string:字符串C#中的变量的命名规则:1.由字母、数字或下划线“_”组成2.必须有字母或下划线“_”开头不能以数字开头3.不能是C#中的关键字如:int/string/bool/Main/class......4.区分大小写如:小写的a和大写的A是两个变量定义变量的语法数据类型变量名;例如:int age;数据类型后面,可以定义多个变量。

类型的转换,分为两种:1.隐式类型转换(也叫自动类型转换)2.显式类型转换(又叫强制类型转换)例如:int a=1234;double b=a;系统就会把a整型变量的值赋给double变量b,这就是隐式类型转换。

double a=30;int b=(int)a;//这样就是强制把double类型转换为int类型其他数据类型的转换:1.字符串转换为其它类型语法:XX.Parse(字符串); XX代表数据类型例如:string a="123.23";把它转换成小树类型就用double dValue=double.Parse(a);2.任意类型之间的转换语法:Convert.ToXX(任何类型);例如:把布尔型转换为整形;bool a=true;int b=Convert.ToInt(a);运算符和表达式算术运算符都包括+ - * / % ++ -- ~,分别是,加法运算减法运算乘法运算除法运算获得进行除法运算后的余数操作加1 操作减一将一个数按位取反?:检查给出的第一个表达式expression 是否为真。

Unity3D的脚本-script入门

Unity3D的脚本-script入门

Unity3D的脚本-script入门Unity3D的基本操作很容易就能掌握了,接下来就是游戏系统的核心部分:脚本。

什么是Script(脚本)?简而言之,就是使用代码来执行一系列动作命令的特殊文本,它需要编译器来从新解读。

U3D内部如何解读脚本,这不是我们所要关心的—这是引擎开发人员的活,我们所要知道的就是脚本的使用规则。

【三种语言的特点】U3D支持C#,JavaScript,BOO三种语言格式的代码编写。

首先来简单介绍下这三种语言的特点:对U3D来说,这是入门级的脚本语言,U3D内置的函数都能通过JS方便的调用。

语法上,JS和传统的C语言差不多,需要分号结束符,变量类型定义,大括号……不过它的变量类型定义,是通过冒号接在变量右边,如:Name:string=”Li”。

相对其他两种语言,使用JS 语法,很多函数不需要实例化就能直接使用,如:vector3 direction=vector3(1,2,3)。

如果使用C#,则需要使用new关键字:vector3 direction=new vector3(1,2,3)。

JavaScript直接继承自U3D的MonoBehaviour类,因此不像C#和BOO那样需要使用Using或Import来加载类库。

这看似省心,不过因为缺少了加载特殊类库,JavaScript能调用的第三方函数不多(当然,我们可以载入net类库给JavaScript调用,虽然看着有点奇怪……)。

*注意:JavaScript不是Java,同时,U3D中的JavaScript也有别于独立的JavaScript语言。

C#(发音C Sharp),微软开发的面向对象编程语言。

由于有强大的net类库支持,以及由此衍生出的很多跨平台语言,C#逐渐成为U3D开发者推崇的程序语言。

U3D内置的脚本范例中,C#脚本也占了很大一部分(其他脚本是JavaScript脚本)。

另外,在装有VisualStudio 的电脑上,我们也可以使用微软的脚本编辑工具来编写U3D脚本。

The script reference of Unity Unity脚本手册

The script reference of Unity    Unity脚本手册

The script reference of Unity---------------------------by Unity Development StudiosScripting Overview 脚本概述This is a short overview of how scripting inside Unity works.这是一个如何使用unity内部脚本进行工作的简单概述。

Scripting inside Unity consists of attaching custom script objects called behaviours to game objects. Different functions inside the script objects are called on certain events. The most used ones being the following:Unity的内部脚本由附加自定义脚本对象访问游戏对象(行为)组成。

不同的函数在脚本对象的内部被特定事件调用。

下列是最常用的几点:Update:This function is called before rendering a frame. This is where most game behaviour code goes, except physics code.Update:更新该函数在运行第一帧之前被调用。

大部分的游戏行为代码在这里运行,物理代码除外。

FixedUpdate:This function is called once every physics time step. This is the place to do physics-based game behaviour.FixedUpdate:固定更新这个函数会在每一个物理时间步被调用。

这个地方放置(执行)基本的物理行为代码。

Unity3D常用脚本

Unity3D常用脚本
function OnGUI () {
GUI.Box (Rect (5, 300, 110, 75), GUIContent ("Box", "This box has a tooltip"));
GUI.Button (Rect (10, 230, 100, 20), "No tooltip here");
Application.Quit();
}
}
心得:
场景转换时,这个程序贴在按钮界面场景中。在Build Setting(导出)(在File下)菜单中加入所需场景。
0为按钮界面。可以无限增加场景。
}else if(GUI.Buttont/2-130,60,50),"Scene2")){
鼠标碰触后显示说明文字。
function OnGUI () {
GUI.Button (Rect (0, 0, 100, 20), GUIContent ("Click me", "This is the tooltip"));
bel (Rect (0, 40, 100, 40), GUI.tooltip);
GUI.enabled = allOptions;
extended1 = GUI.Toggle (Rect (20,70,130,20), extended1,
"Extended Option 1");
extended2 = GUI.Toggle (Rect (20,90,130,20), extended2,
Application.LoadLevel (2);
screenbutton = false;

我学院:Unity3D脚本概述

我学院:Unity3D脚本概述

学IT技能上我学院网Unity3D脚本概述和其他的3D软件一样,Unity3D作为一个类播放器的3D集成软件,具有良好的时间层级关系。

比如Start()里面的语言,总是在播放器初始化时执行一次,而后就不再执行。

例如下面用JS写的一个例子。

在菜单栏上选中——> ——> ,将下面这段代码拖拽给Hierarchy【层次清单栏】中任意一个对象。

您就会在播放器刚开始播放的时候,在左下角的控制台面板中看到这句话,证明您的Game播放器已经开始工作了。

如图5.1所示:当然有了初始化函数,就一定会有刷帧函数Update(),该函数内所有的代码会在播放器每播放一帧时执行。

例如下面用JS写的一个例子,在菜单栏上选中——>学IT技能上我学院网——> ,输入如下代码:该代码会在播放器每播放一帧的时候,显示游戏开始到现在所消耗的时间值。

Unity3D中有着非常强大的接口处理功能,您可以在代码中为对象制定任意一个空接口用于和对应类型的对象进行交互,例如下面用JS写的一个例子,在菜单栏上选中——> ——> ,输入如下代码:除了数字作为接口外,接口还可以是对象,例如下面用JS写的一个例子,在菜单栏上选中——> ——> ,输入如下代码:学IT技能上我学院网,cubeGO的后面有个很明显未定义对象填写栏,然后我们把想要使之运动的物体拖拽到这个上面来,当我们运行游戏时,只要按下“G”键就可以看到被拖拽的物体作为“cubeGO”的指代对象,朝着Z轴方向运动了。

Unity3D中的C#Script编程的注意事项也许您在学习Unity3D之前,已经是一位C#的编程高手了。

但在Unity3D中的C#并不像真正的C#那般强大,在Unity3D的C#中必须全部继承自MonoBehaviour。

下面为一段C#Script的完整代码:除此之外它不支持空间命名,但官方说他们很有可能会在以后的版本中支持这一功能。

Unity 3D 游戏开发(微课版)课件 06第六章 模型动画特效

Unity 3D 游戏开发(微课版)课件  06第六章 模型动画特效

using UnityEngine; public class AudioSourceDemo : MonoBehaviour{
privateAudioSource audioSource; public AudioClip[] audioClips; private int i=0; public int clips; void Start(){
6.1.2 音频播放-音频播放组件AudioSource
AudioSource音频播放组件是用来播放声音的组件,模拟现实世界中声音播放的播 放过程。可以通过菜单栏中的“Component”->“Audio”->“Audio Source”添加 音频播放组件。关于组件的参数和“AudioSource”类相关属性函数介绍见下表。
public VideoPlayer videoPlayer; void Start(){
videoPlayer=this.GetComponent<VideoPlayer>() ; videoPlayer.frame = 100;//跳过前 100 帧 videoPlayer.isLooping = true; videoPlayer.playbackSpeed=
void Start(){
if (offset < 0) return 0;
string device = Microphone.devices[0];
micRecord.GetData(volumeData, offset);
micRecord = Microphone.Start(device, true, for (int i = 0; i < 128; i++){
属性 isPlaying url clip

unity脚本教程

unity脚本教程

unity脚本教程Unity是一款强大的游戏开发引擎,并且拥有易学易用的脚本编程接口。

本教程将带您了解如何使用Unity脚本来实现游戏中的各种功能。

首先,我们需要了解脚本是什么。

脚本是一段被编写的代码,用于给游戏对象指定行为。

在Unity中,脚本是使用C#编写的,因此您需要具备一定的编程知识。

如果您对C#不熟悉,建议先学习相关的C#教程。

在Unity中,脚本是指定给游戏对象的组件。

要创建一个新的脚本,您可以右键点击项目视图中的任何文件夹,选择Create -> C# Script。

接下来,您可以将这个脚本拖拽到场景中的游戏对象上,或者在代码中实例化并附加到对象上。

一旦您有了一个脚本,就可以开始编写代码了。

每个脚本都必须包含至少一个特殊函数:Start()函数和Update()函数。

Start()函数在游戏对象被创建时调用,而Update()函数则在每一帧更新时被调用。

您可以在这些函数中编写代码,实现游戏对象的行为。

例如,如果您想让一个游戏对象在场景中移动,您可以在Update()函数中编写代码,使其根据用户的输入移动。

首先,您需要获取用户的输入,可以使用Unity提供的Input类。

然后,根据用户输入的方向,您可以修改游戏对象的Transform 组件的position属性,从而改变其位置。

除了移动游戏对象,您还可以使用脚本实现许多其他功能,如碰撞检测、动画控制、触发事件等。

Unity提供了许多内置的组件和函数,用于实现这些功能。

例如,您可以使用Rigidbody组件来控制游戏对象的物理行为,使用Animator组件来控制游戏对象的动画,使用Collider组件来检测碰撞等。

当然,这只是Unity脚本的入门教程,还有许多其他更复杂的功能和概念需要掌握。

例如,您可能需要了解如何使用协程来处理异步操作,如何使用事件系统来处理游戏对象之间的通信,如何使用单例模式来管理全局状态等等。

要学习更多关于Unity脚本的知识,建议您查阅官方文档和相关的在线教程。

Unity脚本入门

Unity脚本入门

Unity脚本入门2010-09-16 16:16:58| 分类:Unity3D | 标签:无|字号大中小订阅在Unity中脚本是必不可少的.因为他将定义你游戏的各种行为.这个教程将介绍javaScript 的基本使用.1.目标在Unity中,脚本是用来界定用户在游戏中的行为(或规则).Unity推荐使用的编程语言是JavaScript,同时也支持C#或Boo.2.前提本教程的重点是Unity脚本基础,前提是你已经熟悉了Unity的界面(如果不是,你可以阅读UnityGUI教程).为了使脚本更容易理解,最好有个支持JavaScript语法高亮的代码编辑器,它会将关键字用醒目的方式显示出来.可以使用SubEthaEdit编辑器.3.命名规范开始前,先说下Unity的一些规范.变量- 首写为小写字母.变量用来存储游戏状态中的任何信息.函数- 首写为大写字母.函数是一个代码块,在需要的时候可以被重复调用.类- 首写为大写字母.可以被认为是函数的库.当阅读范例时注意首写字母,将有助于你更好的理解对象之间的关系.4.用户输入我们第一个例子是在场景中实现一个简单的移动.设置场景-启动Unity.创建一个用来移动的平面.GameObject->CreateOther->Plane.在Inspector面板中设置Position为"0,0,0".-创建一个Cube.GameObject->CreateOther->Cube.坐标为"0,1,0".-我们都知道现实世界里物体成像靠的是光反射,那么我们这里也是需要光线的.GameObject->CreateOther->PointLight.坐标为"0,5,0".-保存.快捷键为Ctrl+s.我们的第一个脚本我们打算移动用户的视线,这需要通过控制主相机的位置来实现.我们就要写一个脚本,然后把脚本和相机结合起来.-创建一个空脚本.Assets->Create->JavaScript并命名为"Move".重命名快捷键为F2.-双击打开脚本Move.默认包含Update()函数.将我们的代码加入这个函数,他将在每一帧执行一次.我们需要用transform来改变相机的位置,用到Translate这个函数,他有x,y,z三个参数.我们加入以下代码:function Update(){transform.Translate(Input.GetAxis("Horizontal"),0,Input.GetAxis("V ertical"));}Input.GetAxis()函数返回一个从-1到1之间的值,如横轴上左半轴为-1到0,右半轴为0到1.如果需要,我们可以通过Edit->ProjectSettings->Input中重定义按键映射.连接脚本脚本写完了,如何让他起作用呢?我们需要把脚本赋予物体才行.-点击希望应用脚本的物体对象.这里对我们而言就是相机.从Hierarchy面板中选中它.-在菜单中选择Components->Scripts->Move,这样我们便从Inspector面板中看到相机中添加了Move这个组件.(我们也可以用鼠标把脚本拖拽到物体对象上)点击运行,我们即可前后左右来控制相机移动了.DeltaTime放在Update()函数中的代码是按照帧来执行的.如果我们需要物体的移动按照时间秒来执行.为了实现这一目标,我们需要将Input.GetAxis()函数的返回值乘以Time.deltaTime:var speed = 5;function Update(){var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;var y = Input.GetAxis("V ertical") * Time.deltaTime * speed;transform.Translate(x, 0, z);}这里的speed为显式变量,可以在Inspector面板中看到.我们可以在使用中随时调整它的值,很方便.5.连接变量Unity允许在界面上拖拽(drag and drop)的方式赋脚本.快捷方便.这里,我们将涉及连接变量的概念.-在场景中添加一个聚光灯.GameObject->CreateOther->SpotLight.Position为"0,5,0",Rotation 为"90,0,0".-创建一个JavaScript脚本,命名为"SpotLight".我们想让聚光灯照向主相机.我们可以使用transform.LookAt()这个函数.如何使用这个函数呢?我们需要创建一个显式变量.在SporLight脚本中写入如下代码:var target : Transform;function Update(){transform.LookAt(target);}-把脚本赋予聚光灯对象.记得怎样赋予吗?要么在菜单栏Component中添加,要么鼠标拖放.之后,"target"变量就出现在Inspector面板里了.-将Hierarchy面板中的主相机对象拖放到Target变量上.如果我们想让聚光灯照向其他物体,我们也可以将其他物体拖放上去,只要是Transform类型的即可.-运行.你可以看到聚光灯一直照向主相机.6.访问组件一个游戏对象可能有多个脚本或其他组件.它将不可避免的要访问其他组件的函数或变量.Unity中通过GetComponent()函数来实现这个目的.我们现在要实现按下空格键后让聚光灯照向Cube.我们考虑一下这个步骤:1.监视空格键被按下.2.空格键按下后聚光灯照向Cube.由于SporLight脚本中有target变量,我们只需要为这个变量设定新的值就可以了.-创建一个脚本,命名为Switch,添加如下代码:var switchToTarget : Transform;function Update(){if(Input.GetButtonDown("Jump"))GetComponent(SpotLight).target = switchToTarget;}注意GetComponent()的参数,它将返回一个参数给SpotLight脚本,我们就可以用它来访问"target"变量.-添加Switch脚本到聚光灯对象,并将Cube拖放到Inspector面板中的switchToTarge变量上.-运行.按下空格后,聚光灯将照向Cube.前面我们提到,可以通过写代码的方式指定变量(而不是通过Unity界面),如何做到呢?上面按下空格时告诉聚光灯聚焦到Cube上,我们是在SpotLight脚本中做一个显式的变量,将Cube 拖放上去.而在代码中主要有2种方法去实现:1.使用对象的名称(name)2.使用对象的标签(tag)1.对象名称可以从Hierarchy面板上看到对象的名称.用GameObject.Find()函数来使这些名称作为参数.因此,我们可以这样写:function Update(){if(Input.GetButtonDown("Jump")){var newTarget = GameObject.Find("Cube").transform;GetComponent(SpotLight).target = newTarget;}}注意,以上没有出现显式的变量.2.对象标签对象标签是一个字符串,用来识别一个组件.在Inspector面板中点击Tag按钮查看内建的标签.我们也可以创建自己的标签.GameObject.FindWithTag()函数能通过具体的标签寻找组件并返回一个字符串作为参数.function Update(){if(Input.GetButtonDown("Jump")){var newTarget = GameObject.FindWithTag("fang").transform;GetComponent(SpotLight).target = newTarget;}}7.实例我们要在运行时创建(create)对象就要用到Instantiate函数.让我们来实现如何在每次按下开火按钮(鼠标左键或Ctrl键)后通过实例化一个新的对象.需要思考以下几点:1.哪个物体做我们的实例?2.在哪儿实例化?关于第一个问题,最好的办法就是显式变量.这样我们就可以随时通过拖放来改变我们的实例对象.至于在哪儿实例化,我们只要实现当按下开火键时,在用户的当前位置创建一个对象即可.实例化函数有3个参数:1.我们要建立的对象.2.对象的位置坐标.3.对象的旋转位置.完整的代码如下:var newObject : Transform;function Update(){if(Input.GetButtonDown("Fire1")){Instantiate(newObject, transform.position, transform.rotation);}}要记住,transform.position和transform.rotation是附加这个脚本的物体的位置.我们这里假设为主相机.一般情况下,将要被实例化的对象设置为预设(prefab),我们现将Cube设置为预设.-首先,让我们创建一个预置.Assets->Create->Prefab.命名为Cube.-从Hierarchy面板中选取Cube拖放到Project面板的Cube上.-创建一个脚本并命名为Create,并把上面的代码加进去.-把这个脚本赋予相机,并将Cube预设赋予脚本变量.-运行.移动相机并按下开火键,你能看到新的Cube出现.8.调试调试是发现和修正你的代码中人为错误的技巧,Unity中提供了Debug类,我们现在看看Debug.Log()函数.Log()函数允许用户发送信息到Unity的控制台.这样做的原因可能包括:1.在运行时要验证某部分代码是否达成.2.报告变量的状态.我们现在使用Log()函数,当用户点击开火按钮时,发送一个消息到Unity控制台.-打开创建的脚本并在"Instantiate"代码内"if"处添加如下代码:Debug.Log("Cube created");-运行.点击开火键,我们能看到Unity界面下方显式"Cube created".Watch另外一个有用的功能是用于调试私有变量.这使得当Debug模式被选中时Inspector面板中的变量,但它不能被编辑.为了证明这一点,我们将显式一个私有变量作为Cube实例的计数器.我们在脚本中加入两行内容,1.添加私有变量cubeCount.2.当一个cube实例创建后增加这个变量完整代码如下:var newObject : Transform;private var cubeCount = 0;function Update(){if(Input.GetButtonDown("Fire1")){Instantiate(newObject, transform.position, transform.rotation);Debug.Log("Cube created");cubeCount++;Debug.Log(cubeCount);}}9.常见脚本类型每当一个新脚本被创建,默认情况下将包含Update()函数.这里我们讲解几个其他常见的函数. FixedUpdate()在这个函数体中的代码每隔固定的间隔执行.它通常在Rigibody中有力的作用的时候被用到.如:// Apply a upwards force to the rigibody every framefunction FixedUpdate(){rigidbody.AddForce(V ector3.up);}A wake()这里的代码将被用作初始化.Start()这个函数在Update()之前,但在A wake()之后执行.Start()函数和A wake()函数的不同点在于Start()函数仅在脚本启用时候执行(Inspector面板中的复选框被选中).OnCollisionEnter()当游戏对象的碰撞脚本与另一个游戏对象碰撞时执行这个函数内的代码. OnMouseDown()当鼠标在一个载有GUI元素(GUIElement)或碰撞器(Collider)的游戏对象里按下时执行该函数体内的代码.// Loads the level named "SomeLevel" as a response// to the user clicking on the objectfunction OnMouseDown(){Application.LoadLevel("SomeLevel");}OnMouseOver()当鼠标悬停在一个GUI元素或碰撞器的对象上时,执行该函数体内的代码.如:// Fades the red component of the material to zero// while the mouse is over the meshfunction OnMouseOver(){renderer.material.color.r -= 0.1 * Time.deltaTime;}******************************************************************************* 前面我们提到,可以通过写代码的方式指定变量(而不是通过Unity界面),如何做到呢?上面按下空格时告诉聚光灯聚焦到Cube上,我们是在SpotLight脚本中做一个显式的变量,将Cube 拖放上去.而在代码中主要有2种方法去实现:1.使用对象的名称(name)2.使用对象的标签(tag)1.对象名称可以从Hierarchy面板上看到对象的名称.用GameObject.Find()函数来使这些名称作为参数.因此,我们可以这样写:function Update(){if(Input.GetButtonDown("Jump")){var newTarget = GameObject.Find("Cube").transform;GetComponent(SpotLight).target = newTarget;}}注意,以上没有出现显式的变量.2.对象标签对象标签是一个字符串,用来识别一个组件.在Inspector面板中点击Tag按钮查看内建的标签.我们也可以创建自己的标签.GameObject.FindWithTag()函数能通过具体的标签寻找组件并返回一个字符串作为参数.function Update(){if(Input.GetButtonDown("Jump")){var newTarget = GameObject.FindWithTag("fang").transform;GetComponent(SpotLight).target = newTarget;}}7.实例我们要在运行时创建(create)对象就要用到Instantiate函数.让我们来实现如何在每次按下开火按钮(鼠标左键或Ctrl键)后通过实例化一个新的对象.需要思考以下几点:1.哪个物体做我们的实例?2.在哪儿实例化?关于第一个问题,最好的办法就是显式变量.这样我们就可以随时通过拖放来改变我们的实例对象.至于在哪儿实例化,我们只要实现当按下开火键时,在用户的当前位置创建一个对象即可.实例化函数有3个参数:1.我们要建立的对象.2.对象的位置坐标.3.对象的旋转位置.完整的代码如下:var newObject : Transform;function Update(){if(Input.GetButtonDown("Fire1")){Instantiate(newObject, transform.position, transform.rotation);}}要记住,transform.position和transform.rotation是附加这个脚本的物体的位置.我们这里假设为主相机.一般情况下,将要被实例化的对象设置为预设(prefab),我们现将Cube设置为预设.-首先,让我们创建一个预置.Assets->Create->Prefab.命名为Cube.-从Hierarchy面板中选取Cube拖放到Project面板的Cube上.-创建一个脚本并命名为Create,并把上面的代码加进去.-把这个脚本赋予相机,并将Cube预设赋予脚本变量.-运行.移动相机并按下开火键,你能看到新的Cube出现.8.调试调试是发现和修正你的代码中人为错误的技巧,Unity中提供了Debug类,我们现在看看Debug.Log()函数.Log()函数允许用户发送信息到Unity的控制台.这样做的原因可能包括:1.在运行时要验证某部分代码是否达成.2.报告变量的状态.我们现在使用Log()函数,当用户点击开火按钮时,发送一个消息到Unity控制台.-打开创建的脚本并在"Instantiate"代码内"if"处添加如下代码:Debug.Log("Cube created");-运行.点击开火键,我们能看到Unity界面下方显式"Cube created".Watch另外一个有用的功能是用于调试私有变量.这使得当Debug模式被选中时Inspector面板中的变量,但它不能被编辑.为了证明这一点,我们将显式一个私有变量作为Cube实例的计数器.我们在脚本中加入两行内容,1.添加私有变量cubeCount.2.当一个cube实例创建后增加这个变量完整代码如下:var newObject : Transform;private var cubeCount = 0;function Update(){if(Input.GetButtonDown("Fire1")){Instantiate(newObject, transform.position, transform.rotation);Debug.Log("Cube created");cubeCount++;Debug.Log(cubeCount);}}9.常见脚本类型每当一个新脚本被创建,默认情况下将包含Update()函数.这里我们讲解几个其他常见的函数. FixedUpdate()在这个函数体中的代码每隔固定的间隔执行.它通常在Rigibody中有力的作用的时候被用到.如:// Apply a upwards force to the rigibody every framefunction FixedUpdate(){rigidbody.AddForce(V ector3.up);}A wake()这里的代码将被用作初始化.Start()这个函数在Update()之前,但在A wake()之后执行.Start()函数和A wake()函数的不同点在于Start()函数仅在脚本启用时候执行(Inspector面板中的复选框被选中).OnCollisionEnter()当游戏对象的碰撞脚本与另一个游戏对象碰撞时执行这个函数内的代码.OnMouseDown()当鼠标在一个载有GUI元素(GUIElement)或碰撞器(Collider)的游戏对象里按下时执行该函数体内的代码.// Loads the level named "SomeLevel" as a response// to the user clicking on the objectfunction OnMouseDown(){Application.LoadLevel("SomeLevel");}OnMouseOver()当鼠标悬停在一个GUI元素或碰撞器的对象上时,执行该函数体内的代码.如:// Fades the red component of the material to zero// while the mouse is over the meshfunction OnMouseOver(){renderer.material.color.r -= 0.1 * Time.deltaTime;}by:Cartoonboy。

unity3d基础文档(gui入门,脚本概览,命令手册)

unity3d基础文档(gui入门,脚本概览,命令手册)

Unity3d-GUI入门这一段将解释UnityGUI控制所需的脚本。

UnityGUI控制UnityGUI控制是利用一类被称为OnGUI()的函数,只要在控制脚本激活的状态下,OnGUI()函数可以在每帧调用,就像Update( )函数一样。

GUI控制在结构上相当简单,这种结构在下面这个例子中十分明显:/* Example level loader */function OnGUI (){// Make a background boxGUI.Box (Rect (10,10,100,90), "Loader Menu");// Make the first button. If it is pressed, Application.Loadlevel (1) will be executedif (GUI.Button (Rect (20,40,80,20), "Level 1")) {Application.LoadLevel (1);}// Make the second button.if (GUI.Button (Rect (20,70,80,20), "Level 2")) {Application.LoadLevel (2);}}这个例子是一个完整的,功能层的装载,如果你把这段脚本复制粘贴到GameObject上,在Play模式下你将会看到如下的菜单出现。

这个装载菜单是由例子中的代码创建的。

下面让我们看一下这个例子中代码的细节:在GUI的第一行中,GUI.BOX (Rect(10,10,100,90),”Loader Menu”);通过头文本“Loader Menu”显示一个Box控制,它通过一个典型的GUI控制定义,这样我们可以在第一时间解释。

在GUI的下一行中是一个Button控制定义,要注意它与BOX控制之间细微的差别。

Unity Pro编程培训教程第06章 应用程序结构

Unity Pro编程培训教程第06章 应用程序结构
17
导入/导出功能
导出功能 复制文件, 项目程序的部分或全部 生成的文件包括未受保护数据和受保护数据的引用 由扩展文件决定的导出类型 (举例 : *.XDB 导出 DFB 类型, 等.)
导入功能 获取已有项目程序的部分或全部 应用前自动存储 冲突管理 (如果在导入时,元素已经存在) 导入之后必须进行代码分析
输出窗口
27
25
分析应用项目
允许检测每个应用程序修改后产生的错误 在输出窗口自动显示在分析时检测到的所有类型的错误 在输出窗口出现消息,允许你通过双击直接访问出现错误的程序部分
26
创建
下拉菜单 “Build” 可以用于生成项目 Rebuild All Project – 创建可以下载至PLC或PLC仿真器的文件 Build Project – 对现有项目的改变进行生成
4
任务 (续)
EVT 或 TIMER : 事件任务 减少应用程序对输入/输出模块,时间定时器事件的响应时间 单个程序段,可使用 LD, FBD, IL, ST语言编程 EVTi : 事件来自输入/输出模块 TIMERi : 事件来自定时器 (ITCNTRL 功能)
AUX : 辅助任务 用于较慢的任务处理 可以编写最多4个辅助任务程序 (AUX0 至 AUX3) ,在 Premium TSX P57 5•• 和 Quantum 140 CPU 6•••• 上 由程序段 & 子程序组成 使用 LD, FBD, IL, ST编程 周期执行 (从10 ms 至 2.55 s)
保护 部分或全部 (一个或更多程序段, 整个应用, ...)
程序分析
2
软件结构
不同任务 单个任务 : 主任务 (MAST) 多任务 : MAST + 快速任务 (FAST) + 辅助任务 (AUX) 事件任务 : EVT 或 TIMER

Unity3D常用脚本PDF.pdf

Unity3D常用脚本PDF.pdf

场景转换:var screenbutton: boolean;function Start(){DontDestroyOnLoad(this);screenbutton = true;}function Update () {if(Input.GetKeyDown(KeyCode.Escape)){screenbutton = true;}}function OnGUI(){if(screenbutton==true)if(GUI.Button(Rect(Screen.width/2-380,Screen.height/2-190,60,50),"Scene1")){ print("You click Scene1");Application.LoadLevel (1);screenbutton = false;}else if(GUI.Button(Rect(Screen.width/2-380,Screen.height/2-130,60,50),"Scene2")){ print("You click Scene2");Application.LoadLevel (2);screenbutton = false;}else if( GUI.Button(Rect(Screen.width/2-375,Screen.height/2-0,50,50),"Quit")){ print("You click Quit");Application.Quit();}}心得:场景转换时,这个程序贴在按钮界面场景中。

在Build Setting(导出)(在File下)菜单中加入所需场景。

0为按钮界面。

可以无限增加场景。

}else if(GUI.Button(Rect(Screen.width/2-380,Screen.height/2-130,60,50),"Scene2")){ print("You click Scene2");Application.LoadLevel (2);screenbutton = false;复制此段程序并做修改。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

脚本概览:跟踪时间
移动物体: Function Update () { transform.Translate(0,0,2* Time.deltaTime); } 当乘以Time.deltaTime时,实际表达的是:想以 5米/秒移动这个物体,而不是5米/帧。这将使游戏独 立于帧运行,同时运动的单位也好理解。
脚本概览:访问其他游戏物体
4、作为参数传递 一些事件本身包含详细的信息。例如,触发器事件将碰 撞物体的Collider组件传递给处理函数。 OnTriggerStay给我们一个碰撞触发器的引用。从这个碰 撞触发器我们可以获取附加到其上的刚体。
脚本概览:访问其他游戏物体
function OnTriggerStay( other : Collider ) { // 如果另一个碰撞物体也是刚体,给其加上一个力 if (other.rigidbody) { other.rigidbody.AddForce(0, 2, 0); } }
脚本概览:访问其他组件
组件是被用来附加到游戏物体上的,如果把染,附加Camera,就可以使游戏物体变为摄像机。 所有的脚本都是组件,因为它们都能被附加到游戏 物体上。
脚本概览:访问其他组件
最常用的组件可以作为简单成员变量访问:
Component: Transform Rigidbody Renderer Camera Light Animation Collider 可如下访问: transform rigidbody renderer camera(only on camera objects) light(only on light objects) animation collider
脚本概览:访问其他游戏物体
//移动所有的子物体,向上移动10个单位 for (var child : Transform in transform) { child.Translate(0, 1, 0); }
脚本概览:访问其他游戏物体
3、根据名称或标签定位。 我们可以使用GameObject.FindGameObjectWithTag 和GameObject.Find WithTag 搜索具有特定标签的游戏物 体。使用GameObject.Find 根据名称查找物体。
脚本概览:访问其他游戏物体
5、一种类型的所有脚本。 使用Object.FindObjectsOfType找到所有具有相同 类或脚本名称的物体,或者使用 Object.FindObjectOfType找到这个类型的第一个物体。 function Start (){ // 找到场景中可以附加到任意一个游戏物体上的OtherScript var other : OtherScript = FindObjectOfType(OtherScript); other.DoSomething(); }
脚本概览:访问其他组件
使用GetComponent可以找到任何附加在同一款 游戏物体上的脚本和组件。
脚本概览:访问其他游戏物体
大多数高级代码不仅需要操作一个物体。Unity脚 本接口有各种方法来找到并访问其他游戏物体和组 件。下面,我们假定有一个名为OtherScript.js的脚 本附加到场景的游戏物体上。 var foo = 5; function DoSomething ( param : String) { print(param + " with foo: " + foo); }
//找到名为”Hand”的物体,调用附加到它上面的 //OtherScript脚本中的DoSomething 函数. transform.Find("Hand").GetComponent(OtherScript).DoSome thing("Hello");
脚本概览:访问其他游戏物体
//找到名为”Hand”的物体,然后应用一个力到附加在 //Hand的Rigidbody上。 transform.Find("Hand").rigidbody.AddForce(0, 10, 0);
脚本概览
例如:在Unity中: 用脚本来做的包括:计分、处理玩家、定义 玩家和外界行为,以及控制GUI接口。
脚本概览:常用操作
Unity内部的脚本,是通过附加自定义脚本对象到游戏 物体组成的。在脚本对象内部,不同的函数被特定的事件 调用,下面是最常用的几个函数: Update: 这个函数在渲染一帧之前被调用。这里是大部分游戏 行为代码被执行的地方。 FixedUpdate: 这个函数在每个物理时间步被调用一次。FixedUpdate 被调用的频率是由在菜单选项Edit >Project Settings >Time中的固定时间间隔所指定的并且你也能改变它。这 是处理基于物理游戏行为的地方。
脚本概览:访问其他游戏物体
我们也可以通过碰撞触发器获取附加在同一物体上的 任何组件。 function OnTriggerStay( other : Collider ) { // 如果另一个碰撞物体附加了OtherScript,调用它 //的OtherScript,通常碰撞物体不会附加脚本,所 //以我们需要先检查以避免null引起的异常。 if (other.GetComponent(OtherScript)) { other.GetComponent(OtherScript).DoSomething(); }
脚本概览:常用操作
大多数游戏物体的操作是通过游戏物体的 Transform和Rigidbody来做的。在行为脚本内部它 们可以分别通过Transform和Rigidbody访问,因此 如果你想绕着Y轴每帧旋转5度,可以用如下代码实 现: Function Update () { transform.Rotate(0,5,0); }
脚本概览:访问其他游戏物体
1、通过检视面板赋值引用。 在检视面板中可以将任何变量赋值给对象。 //移动拖动到target值的物体 var target : Transform; function Update () { target.Translate(0, 1, 0); }
脚本概览:访问其他游戏物体
脚本概览
脚本概览
简单地说,引擎就是“用于控制所有游戏功 能的主程序,从计算碰撞、物理系统和物体的相 对位置,到接受玩家的输入,以及按照正确的音 量输出声音等等。” 引擎相当于游戏的框架,框架搭好后,关卡 设计师、建模师、动画师只要往里填充内容就可 以了。
脚本概览
引擎提供完成所有困难工作、图形处理、网络等 等的代码。 而脚本被用来将引擎的不同部分连起来,为游戏 进行提供功能,并且实现游戏规则。
脚本概览:跟踪时间
如果想随着时间的变化增加关照的范围,可以用 下面的代码实现:以2单位/秒改变半径。 Function Update () { light.range = 2.0* Time.deltaTime; } 当通过力处理刚体的时候,通常不必使用 Time.deltaTime,因为引擎已经为你考虑到了这一点。
脚本概览:常用操作
如果想向前移动一个物体,可用如下代码实现:
Function Update () { transform.Translate(0,0,2); }
脚本概览:跟踪时间
Time类包含一个非常重要的类变量,称为 deltaTime。这个变量包含从上一次调用Update或 FixedUpdate到现在的时间量。 所以对于上面的例子,修改它使这个物体以一个 恒定的速度旋转而不依赖于帧率: Function Update () { transform.Rotate(0,5* Time.deltaTime,0); }
脚本概览:访问其他游戏物体
2、通过物体层次定位。 对于一个已经存在的物体,可以通过游戏物体的 Transform组件来找到它的子物体和父物体。
//找到脚本所附加的游戏物体的子物体”Hand” transform.Find("Hand").Translate(0, 1, 0);
脚本概览:访问其他游戏物体
脚本概览:访问其他游戏物体
function Start (){ // 通过名称 var go = GameObject.Find (“SomeGuy”); go.transform.Translate(0, 1, 0); // 通过标签 var player = GameObject.Find WithTag ("Player"); player.transform.Translate(0, 1, 0); }
脚本概览:访问其他组件
任何附加到一个游戏物体的组件或者脚本都可以 通过GetComponent访问。 transform.Translate(0,1,0); 等同于 GetComponent(Transform).Translate(0,1,0);
注意:transform和Transform.之间大小写的区别, 前者是变量(小写),后者是类或者脚本名称(大 写)。
将包含OtherScript脚本的游戏对象赋值给target。 var target : OtherScript; function Update () { // 设置target物体的foo变量 target.foo = 2; //调用target物体的DoSomething函数 target.DoSomething(“Hello”); }
脚本概览:访问其他游戏物体
我们可以使用GetComponent,在找到的游戏物体上得到任 何脚本或组件。 function Start (){ // 通过名称 var go = GameObject.Find("SomeGuy"); go.GetComponent(OtherScript).DoSomething(); // 通过标签 var player = GameObject.Find WithTag ("Player"); player.GetComponent(OtherScript).DoSomething(); }
相关文档
最新文档