Unity 脚本入门

原帖地址

在 Unity 中脚本是必不可少的组成部分,因为它将定义游戏的各种行为。Unity 推荐使用的编程语言是 JavaScript,但是 C#Boo 同样也可以。下面介绍 JavaScript 的基本使用及脚本的 API

一、命名规范

在开始之前,先说一下在 Unity 中的一些命名规范。

  • 变量 - 首写是小写字母。变量用来存储游戏状态中的任何信息。
  • 函数 - 首写是大写字母。函数是一个代码块,只需要写一次,在需要的时候可以再次重用。
  • 类 - 首写是大写字母。可以被认为是函数的库。

提示:当阅读范例代码或者 Unity 的 API ,要注意首写字母,这将有助于你更好的理解对象之间的关系。

二、第一个脚本游戏

我们的第一个脚本游戏是在一个简单的游戏场景中走动.

第一步:设置场景,即在游戏场景中添加地面和游戏对象。

  • 地面可由一个扁的 Cube 代替。
  • 创建一个 Cube ,缩放新 x,y,z,为『5,0.1,5』,它现在应该是一个大平板,在层次视图中(Hierarchy View)重命名为『Plane』。

*游戏对象可由另一个Cube代替。

*创建第二个Cube,将它放置在这个大平板的中心位置。如果在游戏视图(Game View)看不到它们,那么改变主相机位置使它们可见。重命名该物体为”Cube1”。

*还应该建立一个点光源,并且放在大平板之上,使它们更清晰。

第一个脚本

要想让游戏对象 Cube1 运动起来,就需要加入脚本。

通过控制主相机的位置来实现,要做到这一点,我们现在要写一个脚本来读取键盘的输入,然后把脚本和相机链接起来。

首先创建一个空脚本。

* 选择”Assets -> Create -> Javascript” 并在项目面板重命名为 “Move1”。

  • 双击 Move1 脚本,它将打开,并且默认包含有 Start()Update()函数,我们将编写的代码插入这个函数,任何加入 Update()函数中的代码都将在每一帧(frame)执行一次。

Update()函数:这个函数在渲染每一帧之前被调用。这里是大部分游戏行为代码被调用的地方。

在 Unity 中为了移动一个游戏对象我们需要用 transform 来更改它的位置,属于 Translate ,这个 Translate 函数有 x,y,z 三个参数,因为我们向通过光标健控制主相机,我们只需要下面这些代码,来决定按键按下后参数的变化。

function Update() {
  transform.Translate(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
}

Input.GetAxis()函数返回 -1 或 1 的一个只,例如在横轴上左光标键映射为 -1 ,右光标键映射为 1。

横轴和竖轴是在输入设置(Input Settings)中预先定义好的。从 Edit -> Project Settings -> input中很容易重定义按键映射。

现在我们的第一个脚本写完了,怎么让 Unity 的游戏对象具有这个脚本行为呢?

第一步: 首先点击你希望应用此脚本的游戏对象,这里是主相机,你可以从层次视图和场景视图中选择它。

第二步: 从菜单栏中 Components -> Script -> Move1,将这个脚本赋予相机,你在检视面板中看到主相机有 Move1 这个组件。

Script -> Move1" title="">

提示:你也可以从项目视图拖拽脚本到场景视图的游戏对象。

点击播放按钮运行游戏,你能通过光标键或 W,A,S,D 键来移动主相机。你也许注意到了,摄像机移动的有点太快了,让我们来找一种更好的办法来控制摄像头的速度。

正如先前在 update()函数里的代码,相机的速度是按帧执行的。然而我们需要游戏对象的移动按秒执行。为了实习这一目标,我们需要将返回值乘以 Input.GetAxis() 函数中的 Time。deltaTime:

var speed = 5.0;
function Update() {
  var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
  var z = Input.GetAxis("Vertical") * Time.deltaTime * speed;
  transform.Translate(x, 0, z));
}

将上面的代码更新到 Move1 脚本。

注意: Update() 外的这个速度变量。这是所为的 public 变量,这个变量会在检视面板中看到。它是很有用的,实际使用中可以方便的调整它的值,这比改变代码来说方便的多。

时间: 2024-08-10 22:50:08

Unity 脚本入门的相关文章

【笨木头Unity】入门之旅010(完结):Demo之四处找死(五)_UI

UI是游戏里必不可少的元素,在Unity里添加UI是比较轻松的事情,但要玩好它,可就不那么轻松了. 没关系,先入门. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2196 文章来源:笨木头与游戏开发 1.创建UI 很早之前也介绍过怎么创建UI,这里简单再回顾一下. 在Hierarchy窗口中点击右键,依次选择[UI]-[Text]. 我们会看到窗口中,多了一个Canvas和Text: 2.让UI跟随物体移动 由于

Unity 3D入门简介

最近在刚开始学习Unity 3D,在这里记录一下学习心得和学习笔记,边学边写,可能会比较零散.好了,废话不多说,今天从Unity 3D入门写起,主要简要介绍一下Unity 3D的和一些学习资料.以下如果不作特别说明,均是指Windows平台的Unity 3D,版本是4.5.1f3. Unity 3D是一款游戏开发引擎,目前支持2D和3D游戏的开发,其最大的优势就是跨平台性非常好,可以很容易的将PC端制作的游戏移植到Android.IOS等移动平台,当然也可以创建网页游戏.刚开始进行Unity 3

Unity Shader入门精要学习笔记 - 第4章 学习 Shader 所需的数学基础

摘录自 冯乐乐的<Unity Shader入门精要> 笛卡尔坐标系 1)二维笛卡尔坐标系 在游戏制作中,我们使用的数学绝大部分都是计算位置.距离.角度等变量.而这些计算大部分都是在笛卡尔坐标系下进行的. 一个二维的笛卡尔坐标系包含了两个部分的信息: 一个特殊的位置,即原点,它是整个坐标系的中心. 两条过原点的互相垂直的矢量,即X轴和Y轴.这些坐标轴也被称为是该坐标的矢量. OpenGL 和 DirectX 使用了不同的二维笛卡尔坐标系.如下图所示: 2)三维笛卡尔坐标系 在三维笛卡尔坐标系中,

Scala基础语法(声明定义、标识符命名、Scala脚本入门)

一.声明与定义(赋值) 1.val, 常量声明   val x:T val x:T=e 2.var, 变量声明   var x:T var x:T=e ?类型省略(默认类型)val x=e var x=e ? 声明省略(连续声明) val x1,x2,x3 等价于 val x1;val x2; var x1,x2,x3:T=e  等价于  var xn:T=e 3.def,函数声明def abc(xn:T):T*=e def adder(m:Int,n:Int) =m+n def adder()

Shell 脚本入门--下

Shell 脚本入门--下 本为大家介绍,本篇介绍内容有:逻辑运算符(& .| .!.^).测试命令.脚本的执行过程 1.逻辑运算符 (1)&与和&&短路与 True .false 1       0 与: 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 对于&来说,如果左侧条件为false,也会计算右侧条件的值.特点只要有一个false就认为是false 短路与: false && =

Unity脚本在层级面板中的执行顺序测试4-附加内容

测试4为一些附加内容,后面的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html Unity脚本在层级面板中的执行顺序测试2 http://www.cnblogs.com/hont/p/5034419.html Unity脚本在层级面板中的执行顺序测试3 http://www.cnblogs.com/hont/p/5179427.html 1.基本执行顺序 Awake OnEn

Unity 脚本的执行顺序

在Unity脚本中常用到的函数就是下面这些,他们的顺序也是按照箭头的方向执行的. Awake ->OnEable-> Start -> FixedUpdate-> Update  -> LateUpdate ->OnGUI ->OnDisable ->OnDestroy 1.Awake 用于在游戏开始之前初始化变量或游戏状态.在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如GameObject.

Unity 脚本的未来发展

最近,我们谈到了Unity 的WebGL . 在那篇文中我们简要谈论到脚本在 WebGL  中的运行的新技术称为"IL2CPP" .然而IL2CPP 所代表的不只是适用于WebGL 的脚本解决方案,同时也是我们自己为了在更多平台上执行 .NET时能有高效能的方案. 在深入探究未来之前,让我们先谈谈现在吧. Unity 中脚本的现状 我们利用Mono (以及在 Windows Store App 和Windows Phone 上的WinRT )让C#变得容易使用,存取第三方资料库并最接近

Linux Shell脚本入门--cut命令

Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [[email protected] ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [[email protected] ~]# cut -c 字符区间 <==用于排列整齐的信息 选项与参数: -d :后面接分隔字符.与 -f 一起使用: -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思: -c :以字符 (