《Unity 5.x游戏开发实战》一2.2 Unity中的C#脚本-阿里云开发者社区

开发者社区> 异步社区> 正文

《Unity 5.x游戏开发实战》一2.2 Unity中的C#脚本

简介:
+关注继续查看

本节书摘来异步社区《Unity 5.x游戏开发实战》一书中的第2章,第2.2节,作者: Alan Thorn 译者: 李华峰 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 Unity中的C#脚本

为游戏定义逻辑、规则和行为的时候,往往需要使用到脚本。如果想将那些静态的、无生命的场景和对象转换成为可以进行交互的环境和对象,那么开发人员就需要编写代码。这些代码定义了这些物体在遇到了指定情况之后,应该做出什么样的反应。金币采集游戏也需要编写代码才能实现所有的功能。这个游戏需要实现3个主要的 功能:

  • 能够感知玩家是否收集到金币;
  • 在游戏进行中,能够及时了解到玩家收集的金币数量;
  • 能确定游戏时间是否已经结束。

在Unity中并没有包含一个能实现上述功能的模块。所以必须自己来编写一些代码来实现这些功能。Unity中支持两种语言,即UnityScript语言(有时候称之为JavaScript语言)和C#语言。这两种语言功能都很强大,但是本书中主要采用的是C#语言。这是因为从发展的趋势来看,JavaScript的使用率将会逐渐下降。现在开始对这个主要功能进行编程。首先在项目(Project)面板的空白区域单击鼠标右键,然后在弹出的上下文菜单中依次选择“Create | C# Script”,就可以创建一个新的脚本文件。另外,也可以从应用程序菜单处依次选择“Assets | Create | C# Script”来创建一个新的脚本文件,如图2.11所示。


11

当创建了脚本之后,需要为脚本起一个描述性的名字。本书起的名字为“Coin.cs”。在Unity中,每一个脚本文件都对应一个与其同名的类。因此,“Coin.cs”文件对应的就是“Coin”类。这个“Coin”类将封装一个金币的所有行为,并最终会附加到场景中的金币上,如图2.12所示。


12


在对象检查(Inspector)面板中双击Coin.cs,就可以使用MonoDevelop打开这个文件。MonoDevelop是一款Unity自带的第三方IDE应用,它可以实现对游戏中的代码进行编写和修改。当一个文件在MonoDevelop中打开之后,它的内容就会如代码示例2.1所示的在MonoDevelop中显示出来。

代码示例2.1:

using UnityEngine;
using System.Collections;

public class Coin : MonoBehaviour
{
  // Use this for initialization
  void Start () {}

  // Update is called once per frame
  void Update () {}
}

注意 代码示例的下载

可以使用自己的账号从http://www.packtpub.com .处下载本书的代码示例。无论你在哪里购买的本书,都可以访问http://www.packtpub.com/support 并进行注册,书中的资源也可以通过电子邮件的形式发送给你。

可以按照如下步骤来下载这些文件:

  • 使用电子邮箱地址在页面上注册,如果已经注 册过了,那么直接登录即可;
  • 找到并使用鼠标单击位于页面顶端的“SUPPORT”;
  • 单击“Code Downloads & Errata”;
  • 在搜索search框中输入要下载资源的书的名字;
  • 选择要下载资源的书;
  • 在下拉菜单中选中购买本书的地点;
  • 单击“Code Download”。

将这些文件下载了之后,要确定解压缩软件已经更新到了最新的版本:

  • WinRAR / 7-Zip for Windows;
  • Zipeg / iZip / UnRarX for Mac;
  • 7-Zip / PeaZip for Linux。
    默认情况下,所有新创建的类都派生自“MonoBehavior”类,这个类中定义了一些对所有组件都通用的函数。“Coin”类具有两个自动生成的函数,也就是Start()和Update()。这些函数都是由Unity自动调用的事件。当游戏对象(关联了这个游戏脚本)在场景中创建时,就会调用Start()函数。Update()函数会在每一帧被附加了游戏脚本的对象中调用一次。Start()函数主要用来实现代码的初始化,Update()函数主要用来实现那些随着事件推移的行为,例如运动和变化。现在,将新创建的脚本文件与场景中的金币对象进行管理,可以从项目(Project)面板处将“Coin.cs”文件拖曳到金币对象上。当完成以后,一个新的金币组件就被添加到了游戏对象上。这意味着这个脚本已经关联到了游戏对象上,如图2.13所示,一个关联了脚本的游戏对象。


13

当一个脚本与一个游戏对象关联到一起之后,这个脚本就作为这个游戏对象的一个组件而存在。一个脚本文件可以添加到多个游戏对象上,甚至可以被多次添加到同一个游戏对象上。每个组件都代表着一个单独而且不同的类的实例化。当一个脚本以这种方式添加进来之后,Unity会自动地调用它的函数,例如Start()和Update()。可以在Start()函数中加入一个Debug.Log语句来确认脚本是否能正常工作,这个语句在场景中的游戏对象被创建时在命令行窗口输出一个调试信息。查看如下所示的代码示例2.2。

代码示例2.2:

using UnityEngine;
using System.Collections;

public class Coin : MonoBehaviour
 {
  // start()是初始化函数
  void Start () {
    Debug.Log ("Object Created");
  }

  // Update在每一帧调用一次
  void Update () {

  }
}

如果按下工具栏上的“Play”键,或者按下键盘上的“Ctrl + P”组合键,来运行这个向游戏对象上添加了前面的那个脚本的游戏,就会在控制台窗口中看到一条内容为“Object Created”的信息,每当这个类进行实例化的时候,都会输出一次(见图2.14)。


14

现在已经为Coin类创建了最基本的脚本,并且已经将这个脚本成功附加到了金币对象上。接下来,继续编写一些函数,这些函数将会记录采集过的金币信息。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Lua游戏开发实践指南》一2.1脚本语言简介
本节书摘来华章计算机《Lua游戏开发实践指南》一书中的第2章 ,第2.1节,(美)Paul SchuytemaMark Manyen著 田剑译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
900 0
Shell复杂脚本实战|学习笔记
快速学习Shell复杂脚本实战
31 0
《阿里巴巴Java Spring Boot 2.0开发实战课程》课程视频和例子代码下载
《阿里巴巴Java Spring Boot 2.0开发实战课程》系列免费课程 视频 ,例子代码
3337 0
纯键盘开发实战(Mouseless Programming)
作为一个践行Mouseless Programming的开发者,来谈谈自己在日常工作中是如何做到「几乎」不用鼠标的。 在说具体的「技巧」之前,先聊一聊纯键盘开发的几个原则: 1. **动机**, 动机要单纯,纯键盘开发不是为了耍酷, 你的动机应该是提高「效率」:) 2. **键盘只是工具,思想才是关键**, 代码和问题先想清楚再下手,想清楚远比写的快重要! 3. **键盘不要经
1773 0
C++程序中嵌入Ruby脚本系统
Ruby,一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。
1271 0
《Xcode实战开发》——导读
本节书摘来自异步社区《Xcode实战开发》一书中的目录,作者 【美】Maurice Kelly , Joshua Nozzi,更多章节内容可以访问云栖社区“异步社区”公众号查看
1368 0
mxml开发实战
1.css中如嵌入的字体在系统中找不到,则字Label出现不了
570 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载