• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > 如何在Unity 3D中编写脚本?

如何在Unity 3D中编写脚本?

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2022-04-30

匿名通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
在上一节我们介绍了 Unity 3D 脚本的基本语法及注意事项,接下啦我们来讲解一下如何在 Unity 3D 中编写一个脚本。

创建脚本

首先执行 Assets→Create→C#Script 或 JavaScript 菜单命令创建一个空白脚本,将其命名为 Move,这里我们以 C# Script 为例如下图所示。

创建脚本

在 Project 面板中双击 Move 打开脚本,进行脚本编写。在 Update() 函数中插入代码,函数内的每一帧代码都会执行,代码如下:
using UnityEngine;using System.Collections;public class Move:MonoBehaviour{    void Update(){        transform.Translate(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));    }}
Input.GetAxis() 函数返回 -1~1 的值,在水平轴上,左方向键对应 -1,右方向键对应 1。由于目前不需要向上移动摄像机,所以 Y 轴的参数为 0。

执行 Edit→Project Settings→Input(输入)菜单命令,即可修改映射到水平方向和垂直方向的名称和快捷键,如下图所示。

input命令

链接脚本

脚本创建完成后,需要将其添加到物体上。在 Hierarchy 视图中,单击需要添加脚本的游戏物体 Main Camera(主摄像机),然后执行 Component→Script→Move 菜单命令,如下图所示,Move 脚本就链接到了 Main Camera 上。

链接脚本

摄像机(Camera)是向玩家捕获和显示世界的设备。通过自定义和操纵摄像机,可以自由旋转游戏视角。场景中摄像机的数量不受限制,它们可以以任何顺序放置在屏幕上的任何地方,或者只捕获屏幕的某些部分。摄像机参数如下图和下表所示。

摄像机参数设置

参 数含 义功 能
Clear Flags清除标识确定屏幕哪些部分将被清除。这是为了方便使用多个摄像机捕 捉不同的游戏元素
Background背景在完成了视图中的所有元素的绘制后以及没有天空盒的情况 下,剩余屏幕的颜色
Culling Mask消隐遮罩包含层或忽略层将被摄像机渲染。在检视窗口向对象分配层
Projection投影切换摄像机以模拟透视
Perspective透视透视摄像机,由原点向外扩散性发射。即,距离越远,它的视口 区域也就越大,透视视图和人眼的视觉感受是一致的
Orthographic正交正交摄像机,无论远近,它的视口范围永远是固定的,相机会均 匀地渲染物体,没有透视感
Size大小当摄像机设置为正交模式时,摄影机视口的大小
Field of view视野摄像机的视野,沿着本地Y轴测量,以度为单位
Clipping Planes裁剪面摄像机从开始到结束渲染的距离
Near近相对于摄像机,绘制将发生的最近点
Far远相对于摄像机,绘制将发生的最远点
Viewport Rect视口矩形摄像机画面显示在屏幕上的区域
X 摄像机视图的开始水平位置
Y 摄像机视图的开始垂直位置
W宽度摄像机输出在屏幕上的宽度
H高度摄像机输出在屏幕上的高度
Depth深度摄像机在渲染顺序上的位置。具有较低深度的摄像机将在较高 深度的摄像机之前渲染
Rendering Path渲染路径定义摄像机的渲染路径
Target Texture目标纹理用于将摄像机视图输出并渲染到屏幕,一般用于制作导航图或 者画中画等效果
Occlusion Culling遮挡剔除指定是否剔除物体背向摄像机的部分
HDR高动态光照渲染启用摄像机的高动态范围渲染功能

运行测试

单击播放按钮,在 Scene 视图中,使用键盘上的 W(前)、S(后)、A(左)、D(右)键移动摄像机,运行效果如下图所示。

测试效果图1
 
测试效果图2

C#脚本编写注意事项

在 Unity 3D 中,C# 脚本的运行环境使用了 Mono 技术,Mono 是指 Novell 公司致力于 .NET 开源的工程,利用 Mono 技术可以在 Unity 3D 脚本中使用 .NET 所有的相关类。

但 Unity 3D 中 C# 的使用与传统的 C# 有一些不同。

1) 脚本中的类都继承自 MonoBehaviour 类

Unity 3D 中所有挂载到游戏对象上的脚本中包含的类都继承自 MonoBehaviour 类。

MonoBehaviour 类中定义了各种回调方法,例如 Start、Update 和 FixedUpdate 等。

通过在 Unity 中创建 C# 脚本,系统模板已经包含了必要的定义,如图下图所示。

在Unity 3D中创建C#脚本

2) 使用Awake或Start方法初始化

用于初始化的 C# 脚本代码必须置于 Awake 或 Start 方法中。

Awake 和 Start 的不同之处在于:Awake 方法是在加载场景时运行,Start 方法是在第一次调用 Update 或 FixedUpdate 方法之前调用,Awake 方法在所有 Start 方法之前运行。

3) 类名必须匹配文件名

C# 脚本中类名必须和文件名相同,否则当脚本挂载到游戏对象时,控制台会报错。

4) 只有满足特定情况时变量才能显示在属性查看器中

只有公有的成员变量才能显示在属性查看器中,而 private 和 protected 类型的成员变量不能显示,如果要使属性项在属性查看器中显示,它必须是 public 类型的。

5) 尽量避免使用构造函数

不要在构造函数中初始化任何变量,而应使用 Awake 或 Start 方法来实现。

在单一模式下使用构造函数可能会导致严重后果,因为它把普通类构造函数封装了,主要用于初始化脚本和内部变量值,这种初始化具有随机性,容易引发引用异常。因此,一般情况下尽量避免使用构造函数。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 游戏网络编程
  • 2017-06-05 虚幻4引擎打造的游戏场景,这还是游戏么。。。。
  • 2017-06-05 cocos2dx编程遇到的一个小问题,望大神指点迷津,详细内容如下
  • 2022-04-30Unity 3D Project视图
  • 2017-06-05 分享《Cocos2D-X游戏开发技术精解(第2版)》电子版
  • 2022-04-30Unity 3D Scrollbar控件
  • 2017-06-05 GL画线的简单问题(只有这么么多分了)
  • 2017-06-05 请问现在主流的quickcocos2d开发环境是什么?
  • 2022-04-30Unity 3D Box控件
  • 2017-06-05 cocos2d-x怎么获取CheckBox复选框的选中个数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Unity 3D Input Field控件
    • h5的canvas做游戏,提高性能最好用几层canvas
    • 在cocos2dx22异步载入声音失败
    • html5现在是否可以进行成熟的web游戏开发?跟Flash相比有没有什么优劣势?
    • cocos2dx精灵问题
    • 关于Unity3DNetWork
    • Unity 3D UGUI实例演示
    • unity安装问题sslpeercertificateorsshwasnotok
    • 实现unity3d程序一键打印照片
    • 学了一下U3D开发游戏发现是个脚本开发工具,有没有不是脚本的?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有