ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity3D 用对象创建对象

2021-06-29 18:04:37  阅读:251  来源: 互联网

标签:Unity3D Cube 里面 Unity3d 对象 GameObject 代码 创建对象 相机


在 Unity3d 中会用到从一个游戏对象复制出一个新的游戏物体的方式,如制作射击游戏的子弹等。在 Unity3d 中可以使用 GameObject.Instantiate 的方式从一个 GameObject 里面创建一个和这个 GameObject 一样的对象

一般此时游戏对象都是使用模板对象,在 Unity3d 里面制作一个模板是十分简单的,只需要在 Hierarchy 里面的物体拖动放到 Assets 文件夹里面就可以了

拖放进去的模板对象推荐给他一个命名,这样才方便查找

先点击 Hierarchy 然后点击菜单的 GameObject 的创建,创建一个立方体。接下来将这个立方体拖动放到 Assets 文件夹,删除 Hierarchy 里面的立方体。等等,是不是有更加简洁的步骤?没错,在 Assets 文件夹里面右击也是可以创建的,只是在 Hierarchy 创建的时候可以方便看到对象在游戏中显示的好看还是不好看

新建一个 C# 代码,可以命名为 Create 在这个代码里面将会判断如果用户点击了按键,将会创建一个 Cube 立方体

在 Unity3d 中判断用户按键的方式请看 Unity3d 连续按键处理和单次按键处理

从 VisualStudio 打开代码,或者右击刚才创建出来的代码文件点击 Open 都可以

在 C# 代码里面添加一个公开的字段,这个字段叫 Cube 用来在 Unity3d 界面给他赋值

    public GameObject Cube;

创建出来的代码还需要放在某个 GameObject 里面才能运行,本文将这个代码放在相机里面,放在相机可以通过拖动代码文件,放在相机对象上面,此时可以在相机里面看到如下图

可以在相机的 Component 看到有脚本代码,所以反过来点击 Add Component 添加代码也是可以的

在这个代码里面可以看到刚才定义的字段 Cube 在界面显示,将刚才放在 Assets 的 Cube 对象拖动放在这个字段上去,这样就在 Unity 上绑定了游戏对象了

也就是在脚本执行的时候,这个 Cube 字段就会被框架赋值,给的值就是在 Unity 界面拖动过去的对象

接下来就是编辑 Update 的方法了,在判断到用户点击了鼠标,就根据字段创建一个新的游戏对象,这里创建的游戏对象默认都会自动添加到游戏画面中

    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            // 鼠标左键
            var cube = GameObject.Instantiate(Cube);
        }
    }

此时就完成了创建,保存代码,在 Unity3d 里面点击开始游戏,然后点击一下鼠标。此时可能还看不到这个 cube 对象,可能的原因就是这个 Cube 不在相机范围内。可以通过点击一下暂停按钮看看是不是 Cube 放在了相机范围外

如果想要设置这个 Cube 在相机可见范围里面,简单做法是放在相机前面,我的相机是面向 z 轴的,如下图我的相机设置如下,那么如何设置创建出来的物体的坐标在我的相机前面

可以通过物体的 transform 属性进行移动物体,可以先移动到相机所在的地方,然后再次移动到相机前面

        if (Input.GetButtonDown("Fire1"))
        {
            // 鼠标左键
            var cube = GameObject.Instantiate(Cube);
            cube.transform.Translate(transform.position);
            cube.transform.Translate(0, 0, 10);
        }

这样就完成了代码啦

本文代码放在github欢迎小伙伴访问

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。

如果在博客看到有任何不懂的,欢迎交流

标签:Unity3D,Cube,里面,Unity3d,对象,GameObject,代码,创建对象,相机
来源: https://blog.51cto.com/u_11283245/2955557

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有