开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:676

当前位置:游戏蛮牛 技术专区 教程分享

查看: 766|回复: 5

[入门教程] Unity基础 - 脚本入门

[复制链接]  [移动端链接]
7日久生情
4295/5000
排名
2278
昨日变化
1

1646

主题

1657

帖子

4295

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
132510
好友
17
蛮牛币
62364
威望
0
注册时间
2015-12-24
在线时间
352 小时
最后登录
2017-6-20
发表于 2017-1-4 17:53:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x

在 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"));}
  • 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="" style="border: none; box-sizing: border-box; max-width: 100%;">

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

点击播放按钮运行游戏,你能通过光标键或 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));}
  • 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 变量,这个变量会在检视面板中看到。它是很有用的,实际使用中可以方便的调整它的值,这比改变代码来说方便的多。

来源于网络

[发帖际遇]: BobbyKim 乐于助人,奖励 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

3偶尔光临
236/300
排名
11765
昨日变化
4

0

主题

161

帖子

236

积分

Rank: 3Rank: 3Rank: 3

UID
95669
好友
0
蛮牛币
480
威望
0
注册时间
2015-4-27
在线时间
21 小时
最后登录
2017-5-16
发表于 2017-1-5 02:15:15 | 显示全部楼层
感謝分享這麼好的資源!

回复 支持 反对

使用道具 举报

3偶尔光临
188/300
排名
14226
昨日变化
10

0

主题

75

帖子

188

积分

Rank: 3Rank: 3Rank: 3

UID
10107
好友
3
蛮牛币
84
威望
0
注册时间
2013-12-11
在线时间
78 小时
最后登录
2017-9-21
QQ
发表于 2017-1-5 14:30:46 | 显示全部楼层
unity推荐用js? 求来源出处。

回复 支持 反对

使用道具 举报

4四处流浪
371/500
排名
4691
昨日变化
2

0

主题

58

帖子

371

积分

Rank: 4

UID
188477
好友
0
蛮牛币
684
威望
0
注册时间
2016-12-1
在线时间
83 小时
最后登录
2017-8-29
发表于 2017-1-9 11:36:35 | 显示全部楼层
看看看看看看看看看看看看看看看看

回复 支持 反对

使用道具 举报

3偶尔光临
179/300
排名
10336
昨日变化
8

2

主题

49

帖子

179

积分

Rank: 3Rank: 3Rank: 3

UID
208457
好友
0
蛮牛币
1042
威望
0
注册时间
2017-2-25
在线时间
66 小时
最后登录
2017-9-21
发表于 2017-3-16 11:01:19 来自Mobile--- | 显示全部楼层
来学习一下哦!

回复

使用道具 举报

排名
20239
昨日变化
7

0

主题

44

帖子

70

积分

Rank: 2Rank: 2

UID
222014
好友
0
蛮牛币
102
威望
0
注册时间
2017-5-13
在线时间
10 小时
最后登录
2017-7-19
发表于 2017-5-30 17:22:21 | 显示全部楼层
6666666666666666666666666666666666

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表