Unity快速入门教程-详解预制体(Prefab)及其实例化Instantiate

这篇具有很好参考价值的文章主要介绍了Unity快速入门教程-详解预制体(Prefab)及其实例化Instantiate。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

博主刚学习unity的时候,在网上找预制体相关的博客,可是很难找到一篇凝练且通俗易懂介绍预制体的文章,浪费了不少时间且难以理解一些文章的内容。自己摸索学习了一段时间过后,总算对预制体有了一定的了解,现在本篇文章将凝练的讲一讲unity中的预制体及其实例化。


提示:以下是本篇文章正文内容,下面案例可供参考

一、预制体(Prefab)是什么?

1.1预制体简介

大家平时点的外卖,其菜品很多就是通过预制菜制作的,预制菜的主要特点是规格统一且经过简单加工即可制成成品。我们可以把现实中的预制菜比作unity中的预制体,厨师加工预制菜的过程就是预制体实例化的过程,这里的厨师其实就是instantiate函数,通过函数将预制体实例化。厨师用预制菜制作出了一道成品菜,就是instantiate函数实例化了一个预制体,将该预制体呈现在场景中。

1.2预制体是什么样子的?

预制体可以有多种元素组合而成,所谓的元素一般是游戏素材,比如图片,模型等,将所有的元素打包成一个物体,这个物体就是所谓的预制体。
如图样例就是一个命名为【GameObject】的预制体,它包括了场景中出现的所有元素(房子,马路,树木,栅栏,草丛),函数实例化该预制体后,游戏场景中就会一齐出现房子马路等元素的一个集合。

unity instantiate,unity入门学习,unity,游戏引擎,c#

1.3预制体作用与用途

在一个游戏项目中,场景可能就是由许多个预制体拼凑而成,每个预制体组成了场景中的一点部分元素,比如要制作一个无限大的地图,通常游戏就会设置当主视角接近场景边界的时候,就往外随机生成一个预制体场景,这样就能实现无限大地图的效果。预制体的使用就会大大方便对地图元素的管理。
如果你要制作一把游戏枪械,当枪械激发时你想做出一颗颗子弹出枪膛的效果,那么子弹也可以做成一种预制体,不断在枪口实例化,且实例化之后沿着枪口方向移动。

二、制作一个预制体

2.1制作预制体示例

unity instantiate,unity入门学习,unity,游戏引擎,c#

我们首先将素材拖入场景界面,可以根据你对游戏场景的设计,摆出你希望的预制体的样子,你所设计的样子,就是以后预制体实例化的样子。

unity instantiate,unity入门学习,unity,游戏引擎,c#unity instantiate,unity入门学习,unity,游戏引擎,c#

然后我们创建一个空的物体,将我们所添加的元素全部并入到该空物体,成为其子项。

unity instantiate,unity入门学习,unity,游戏引擎,c#unity instantiate,unity入门学习,unity,游戏引擎,c#

最后,我们将【GameObject】拖入到Project的一个文件夹,至此,一个预制体就制作完成了。以后要使用该预制体的时候,我们就可以从Project中实例化该预制体。保存好之后就可以把场景【Hierarchy】里面的【GameObject】删去了,保存【Project】里面的源预制体即可,因为我们实例化调用的是项目里面的源预制体。

2.2预制体实例化

要实例化一个预制体,我们首先要代码获取到源预制体,然后在通过Instantiate函数将获得的源预制体实例化。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    //预制体是用GameObject类型
    public GameObject prefab; 
}

unity instantiate,unity入门学习,unity,游戏引擎,c#
unity instantiate,unity入门学习,unity,游戏引擎,c#

unity instantiate,unity入门学习,unity,游戏引擎,c#

我们可以通过pubic来获取外部的源预制体,pubic可以在编辑器界面生成一个面板窗口,随后将源预制体拖放到【Test】脚本下的【Prefab】窗口。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    public GameObject prefab;
    private void Start()
    {
        Instantiate(prefab);
    }
}

unity instantiate,unity入门学习,unity,游戏引擎,c#

在脚本中加上Instantiate(prefab),保存代码返回编辑器中点击play运行,即可简单的将预制体实例化,生成刚刚所设计的场景在游戏中。


总结

本文只是简单的介绍了Instantiate函数的最简单用法,Instantiate函数还可以设置更多参数,比如初始化预制体的位置,旋转角度等,比如文章来源地址https://www.toymoban.com/news/detail-780963.html

      Instantiate(prefab, new Vector3(0,0,0), Quaternion.identity);

到了这里,关于Unity快速入门教程-详解预制体(Prefab)及其实例化Instantiate的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity快速入门教程-创建并启用c#脚本

    提示:本篇文章主要提供新手入门学习,初次发文,多多指教 unity通过c#脚本构建项目逻辑关系,本篇介绍c#脚本创建,启用及其简单示例 提示:以下是本篇文章正文内容,下面案例可供参考 在Project窗口依次单击右键–Create–C#Script,创建脚本,假设命名为【Test】。

    2024年02月11日
    浏览(34)
  • 第十六章 Unity 预制件prefab(上)

    本章节我们介绍一下“预制件”,也有人叫“预制体”,也就是Prefab。在游戏世界中,那些自然环境的游戏对象,我们可以提前创建在场景中,这个大家能够理解。但是,有些游戏对象,需要根据游戏逻辑来通过代码生成,例如刷新怪物,触发机关等等。Unity 的预制件系统允许

    2024年02月08日
    浏览(39)
  • Unity 之预制体(Prefab)的解释以及用法

    Unity中的预制体(Prefab)是一种重要的资源类型,用于创建和管理游戏对象(GameObject)。预制体是一种可重用的模板,可以在游戏场景中多次实例化,使开发人员能够更轻松地创建和管理大量相似的对象。以下是有关Unity预制体的详细介绍,包括其作用和用法: 作用: 重用性

    2024年02月09日
    浏览(31)
  • 第十七章 Unity 预制件prefab(下)

    本章节我们来讲解如何编辑预制体文件。这里介绍三种打开编辑预制件的方式。第一就是通过预制件的实例游戏对象的Inspector检视面板上面的预制件“打开”按钮。 第二就是在Project工程面板中选中预制件文件(Cube.prefab),然后在Inspector检视面板中点击“打开预制件”。 第

    2024年02月04日
    浏览(22)
  • [unity3D]什么是预制体(Prefab)?如何制作预制体?如何导出预制体?预制体变体是什么?

    将物体转成预制体之后,就可以以此为模板创建非常多个和预制体一模一样的物体了,其实就是复制。在游戏中我们都见过很多一模一样的物体,只是放置的位置或者其他一些参数不太一样,我们不可能一个一个从方块,球开始慢慢建造,所以就出现了预制体,帮助我们减少

    2024年02月02日
    浏览(30)
  • [Unity]将物体(gameObject)与预制体(Prefab)取消关联,解绑

    在如下Hierarchy窗口中右键点击要解绑的物体  在右键菜单中选择prefab-》Unpack即可将对象与预制体解除关联      

    2024年02月11日
    浏览(39)
  • Unity快速入门教程-制作一个简易版的计时器Time.deltaTime

    制作游戏的时候,可能会需要到一个计时器,本篇文章附完整计时器代码 本文将简单介绍 一次计时器 和 循环计时器 的代码 Time.deltaTime是帧与帧相减出来的,即 Time.deltaTime=后一帧时间-前一帧时间 ,计算结果由你的电脑配置而定,不是固定值。由于Time.deltaTime的结果是由后一

    2024年02月12日
    浏览(38)
  • Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)

    相关文章:Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享) 在教程一中主要侧重讲解gradio的基础模块搭建以及demo展示,本篇文章则会侧重实际任务的搭建。 保持一贯作风简单展示一下如何使用 gradio的核心是它的gr.Interface函数,

    2023年04月26日
    浏览(42)
  • MaterialDesignInXAML WPF入门教程 快速入门

    先去MaterialDesignInXAML下载下来源码,以及Releases,在DemoApp 中就可以看到实际的效果很惊艳了。 除了要有一定的C#、winform 基础外,建议先学习一下 XAML,对整个开发环境有个基础的了解,再来学习此教程。 可以去bilibili上免费学习一下。教程一共12个小时,如果不看后面的实战

    2024年02月05日
    浏览(39)
  • C语言快速入门教程1快速入门 2指令 3条件选择

    C是一种编程语言,1972年由Dennis Ritchie在美国AT T的贝尔实验室开发。C语言变得很流行,因为它很简单,很容易使用。今天经常听到的一个观点是--\\\"C语言已经被C++、Python和Java等语言所取代,所以今天何必再去学习C语言\\\"。我很不赞同这种观点。这有几个原因。这些原因如下:

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包