unity开发知识点小结02

这篇具有很好参考价值的文章主要介绍了unity开发知识点小结02。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

虚拟轴

虚拟轴就是一个数值在-11内的轴,这个数轴上重要的数值就是-1,0和1。当使用按键模拟一个完整的虚拟轴时需要用到两个按键,即将按键1设置为负轴按键,按键2设置为正轴按键。在没有按下任何按键的时候,虚拟轴的数值为0;在按下按键1的时候,虚拟轴的数值会从0-1进行过渡,而不是直接变成-1,;在按下按键2的时候,虚拟轴的数值会从0~1进行过渡
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#
通过Project Settings设置轴的数量以及属性等
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

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

public class AxisText : MonoBehaviour
{
    void Start()
    {
        
    }
    void Update()
    {
        //获取水平轴
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Debug.Log(horizontal + " " +vertical);
        //虚拟按键
        if (Input.GetButtonDown("Jump")) {//触发按键
            Debug.Log("空格");
        }
    }
}

通过按下上下左右键可改变其水平,垂直虚拟轴的值
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

手机,平板等设备实现触摸操作

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

public class TouchText : MonoBehaviour
{
    
    void Start()
    {
        //开启多点触摸
        Input.multiTouchEnabled = true;
    }

    void Update()
    {
        //判断单点触摸
        if (Input.touchCount ==  1) {
            //获取触摸对象
            Touch touch = Input.touches[0];
            //获取触摸位置
            Debug.Log(touch.position);
            //获取触摸阶段
            switch (touch.phase)
            {
                case TouchPhase.Began://开始触摸
                    break;
                case TouchPhase.Moved://触摸移动
                    break;
                case TouchPhase.Stationary://触摸静止
                    break;
                case TouchPhase.Ended://触摸结束
                    break;
                case TouchPhase.Canceled://触摸因为其他事件打断
                    break;
            }

            //判断多点触摸
            if (Input.touchCount == 2) {
                Touch touch1 = Input.touches[0];//获取第一个触摸点
                Touch touch2 = Input.touches[1];//获取第二个触摸点
            }
        }
    }
}

实时灯光是通过实时计算形成的灯光----性能消耗高
烘焙灯光是当灯光在场景中已经形成相应的效果我们可以把灯光删除,但是场景依然存在灯光效果

unity销毁gameobject,unity知识小节,unity,游戏引擎,c#
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

相机深度,如果场景里面同时存在多个相机,默认显示深度较高的那个相机拍摄到的物体,清除标志如果是仅深度那么就是将各个相机排到的物体叠加显示

通过脚本控制音乐播放

将音频文件放入项目并在物体脚本中设置相应的变量,将音频添加到脚本中
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

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

public class MusicText : MonoBehaviour
{
    // 获取需要播放的音频片段
    public AudioClip mode;
    public AudioClip mode2;

    //播放器组件
    private AudioSource player;
    void Start()
    {
        //获取播放器组件
        player = GetComponent<AudioSource>();
        //设定播放的片段
        player.clip = mode;
        //实现循环播放
        player.loop = true;
        //控制音量
        player.volume = 0.5f;
        //开始播放
        player.Play();
        
    }

    void Update()
    {
        //按空格实现暂停和继续
        if (Input.GetKeyDown(KeyCode.Space)) {
            if (player.isPlaying)
            {
                player.Pause();//暂停
                //player.Stop();//停止

            }
            else {
                player.UnPause();//继续播放
                //player.Play();//重新播放
            }
        }

        //按下按键播放其他音效
        if (Input.GetMouseButtonDown(0)) {
            player.PlayOneShot(mode2);//播放一次音效
        }
    }
}

视频播放

先将视频文件导入项目,在场景中穿件一个平面,并且穿件一个渲染器纹理,在将视频文件加到渲染器纹理中,在创建控制视频播放的脚本,将脚本添加到纹理器中。

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

public class VudioText : MonoBehaviour
{
    private VideoPlayer player;//用于接收视频文件
    void Start()
    {
        player = GetComponent<VideoPlayer>();//接收视频文件
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)) {
            if (player.isPlaying)
            {
                player.Pause();
            }
            else {
                player.Play();

            }
        }
    }
}

控制人物移动

在编写脚本之前我们要向人物添加Character Controller组件
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

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

public class MoveText : MonoBehaviour
{
    private CharacterController player;//创建角色控制器
    void Start()
    {
        player = GetComponent<CharacterController>();

    }

    void Update()
    {
        //获取水平轴
        float horizontal = Input.GetAxis("Horizontal");
        //获取垂直轴
        float vertical = Input.GetAxis("Vertical");
        //创建成一个方向向量
        Vector3 dir = new Vector3(horizontal,0,vertical);
        //让物体朝该方向移动
        //player.Move(dir);   //该方法不存在重力效果
        player.SimpleMove(dir);
    }
}

碰撞及监听

要实现物体的碰撞效果,首先要将物体都设置碰撞器,此外还要确保碰撞的物体最少其中一个要有设置刚体组件

unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

首先对碰撞物体进行脚本编写来监听碰撞事件 ,写者编写的碰撞为两物体碰撞之后产生爆炸,碰撞时销毁物体然后产生爆炸效果,一定时间后又将爆炸效果销毁
爆炸预设体挂载脚本
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

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

public class ColText : MonoBehaviour
{
    //创建碰撞之后产生效果的预设体
    public GameObject prefad;
    void Start()
    {
        
    }

    
    void Update()
    {
        
    }
    //监听发生爆炸    函数所带的元素为和自己发生碰撞的物体
    private void OnCollisionEnter(Collision collision)
    {
        //产生碰撞创建碰撞效果物体   (创建预设体,设定预设体初始位置设置预设体初始旋转)
        Instantiate(prefad, transform.position, Quaternion.identity);
        //销毁自身
        Destroy(gameObject);
    }

    //持续碰撞中
    private void OnCollisionStay(Collision collision)
    {

    }

    //结束碰撞
    private void OnCollisionExit(Collision collision)
    {
        
    }
}

如果要销毁碰撞后产生的爆炸效果应该在单独编写脚本并且将脚本挂载到爆炸效果的预设体上
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

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

public class ExplorText : MonoBehaviour
{
    float timer = 0;
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        timer += Time.deltaTime;
        if (timer > 1) { 
        Destroy(gameObject);     
        }
    }
}

触发器

当某个物体到达某个位置或者触发到某个触发器之后会触发其他场景物体效果
写者将做一个将目标对象移到固定位置造成固定物体消失
触发器和碰撞的区别,设置触发器物体之间可以穿透,碰撞物体之间不能穿透

设置正方体以及长方体为触发器,胶囊移动到正方体位置长方体消失
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

unity销毁gameobject,unity知识小节,unity,游戏引擎,c#

为胶囊设置移动脚本,见上文
为正方体设置触发事件脚本

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

public class moveclo : MonoBehaviour
{
   
    void Start()
    {
        
    }
    void Update()
    {
        
    }
    //进入触发器   函数元素代表进入触发区的物体
    private void OnTriggerEnter(Collider other)
    {
        //若有物体进入触发器,将名称为door的物体设为不显示
        GameObject door = GameObject.Find("door");
        if (door != null) { 
            door.SetActive(false);
        }
    }
    //停留在触发器中
    private void nTriggerStay(Collider other)
    {
        
    }
    //离开触发器
    private void OnTriggerExit(Collider other)
    {
        
    }
}

效果展示
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#
unity销毁gameobject,unity知识小节,unity,游戏引擎,c#文章来源地址https://www.toymoban.com/news/detail-725535.html

到了这里,关于unity开发知识点小结02的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Unity知识点详解】自定义程序集

            今天来介绍一下Unity中的自定义程序集。在项目开发中我们经常接触到第三方插件的程序集,如DOTween、Newtonsoft.Json等。         使用自定义程序集有这么几个好处: 方便代码的的复用。当某一功能模块需要在多个项目中重复使用时,可以将代码编译成程序集,将程

    2024年02月19日
    浏览(43)
  • Unity知识点 -- AssetBundle(AB包)

    特定于平台的资产压缩包,类似于压缩文件 资产包括:模型、贴图、预制体、音效、材质球等 2.1 相对于 Resources 下的资源,AB 包更好管理资源 Resource:打包时定死,只读,无法修改 AB包:存储位置可以自定义,压缩方式可以自定义,后期可以动态更新,通过 AB 包可以做热更

    2024年02月13日
    浏览(43)
  • Unity3D知识点精华浓缩

    一、细节 1、类与组件的关系 2、Time.deltaTime的含义 3、怎么表示一帧的移动距离 4、Update和LateUpdate的区别和适用场景 5、找游戏对象的方式(别的对象 / 当前对象的子对象) 6、组件1调用组件2中方法的方式 7、在面板中获取外部数据的方法 8、序列化属性、序列化自定义对象的

    2024年04月09日
    浏览(39)
  • 开发知识点-RabbitMQ

    RabbitMQ是一个使用Erlang语言开发 开源的消息中间件项目(Message Broker), 采用Mozilla Public License(MPL)开源许可证。这意味着任何人都可以自由获取、使用、修改和分发RabbitMQ的源代码。 实现了高级消息队列协议(AMQP)并提供可靠的、异步的消息传递机制。 可以让你在不同的

    2024年02月02日
    浏览(39)
  • 网络开发过程详细知识点

     网络生命周期 至少包括系统构思与计划、分析和设计、运行和维护的过程。  常见的迭代周期分为四阶段周期、五阶段周期、六阶段周期。   网络开发过程根据五阶段迭代周期模型可被分为 五个阶段:    需求分析、现有网络分析、确定网络逻辑结构、确定网络物理结构

    2024年02月07日
    浏览(38)
  • 【unity数据持久化】XML数据管理器知识点

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 XML是什么 XML(Extensible Markup Language)是一种类似于 HTML,但是没有使用预定义标记的语言。因此,可以根据自己的设计需求

    2024年02月11日
    浏览(39)
  • 【Unity知识点详解】Button点击事件拓展,单击、双击、长按实现

    Button拓展         今天来聊一下关于Button的事件拓展,这里只是拿Button来举例,Unity中其他的UI组件如Toggle、Slider等都也适用。         我们知道在Button中我们可以通过onClick的方式来添加点击事件,但在游戏开发过程中我们往往对Button有着更多的功能需求,比如说双击、

    2024年04月10日
    浏览(54)
  • 知识点19--springboot多模块开发

    本篇向大家介绍本系列demo教程中最后一个知识点就是多模块开发,多模块听着高大上,其实就是依靠maven相互之间的依赖,把多个模块融合进一个项目中而已,说的再直白一些就是像日常开发那样把其他模块导入一个模块,这个模块用来启动并调用所有模块而已。下面通过一

    2024年02月06日
    浏览(46)
  • WPF快速开发(2):图标库知识点

    图标资源下载 iconfont Window.Resources:资源位置声明 X:Key:资源Id,用于前端的xaml X:Name:控件Id,用于后端的程序标记 简单样例 Setter:属性 用于设置控件属性 可以直接写,也可以在Style.Setters里面写 使用属性使用Style=“{StaticResource 样式名}” 继承关系 一个控件只能有一个Style

    2024年02月15日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包