unity项目《样板间展示》开发:逻辑代码实现

本文详细介绍了在Unity项目《样板间展示》中实现漫游逻辑和UI功能,包括创建交互图层、模型设置、灯光控制脚本编写,以及如何处理静态光线问题。开发者分享了实际开发过程中的注意事项和解决方案。
摘要由CSDN通过智能技术生成

unity项目《样板间展示》开发:逻辑代码实现

前言

这个项目的教程文章已经断更三个月之久,现向学习该项目dome的小伙伴们致歉。
断更原因嘛,就是实习工作,后续我也会发布相关的文章,做一个分享。

请添加图片描述
话不多说,直接开始教程吧!

漫游逻辑实现

断更时间长了,竟不知从何讲起,又费力仔细阅读了前面的两篇文章,好在对项目的了解还是比较熟悉,给大家做个反面教材,大家做事情一定坚持做完!

前面的两个章节我们把最基础的东西都做完了,接下里就是逻辑的实现,首先需要做的就是模型的漫游逻辑。由于我们导入的房屋模型中,其自带漫游代码,所以我们只需要进行简单的设置。

在这里插入图片描述

打开之后发现全是英文,可能会说英语不好怎么办,问题不大,我们直接科技加持——上翻译。看得懂英语更好,看不懂也不要紧,我会直接带大家一步一步做。
在这里插入图片描述

  1. 第一步:
    选择Edit->Project Settings…,打开Project Settings
    在这里插入图片描述
    打开选择Tags and Layers,创建一个名为InteractRaycast的图层,如图所示:
    在这里插入图片描述
    完成之后关闭即可,一定要注意命名一致!这里是用来给家具进行交互的。

  2. 第二步:
    选中场景中的PlayerFPS,然后将其Tag标签设置为Player
    在这里插入图片描述

  3. 第三步:
    打开PlayerFPS中的Camera,将其Tag标签设置为MainCamera
    其中的Camera (1)是做小地图用的。
    在这里插入图片描述

  4. 第四步:
    🟠注意: 从这一步开始,就不要(不建议)做了,做光线烘焙的话,场景中物体的光线会变成静态的光照,不受后期控制,只受烘焙光线的控制。这里是将模型素材文档的内容全部讲解,但是! 如果你按照我说的没有进行下面的操作,并完成这篇文章的内容之后发现房屋中的灯光不受控制之后,再过来操作下面的步骤以及静态光线问题解决标题中的步骤,以便解决静态光照问题。标准做法是继续操作下面的步骤以及静态光线问题解决步骤,这里大家根据自己的想法进行选择,如果懒得动手就到此结束,直接操作下一标题的内容;如果想要标准的,就操作下面的步骤以及静态光线问题解决步骤。
    选择Window->Rendering->Lihgting
    在这里插入图片描述
    在打开的窗口中选择Environment,点击Generate Lighting
    在这里插入图片描述
    这里需要等待一会,场景出现变化也不要紧张,烘焙的正常现象,下面就是烘焙完成后的
    在这里插入图片描述
    文档里最后一个步骤在这里项目没用到,其作用就是设置玩家自身的范围大小,这里就不进行阐述了。


完成以上步骤之后运行项目,此时就可以对场景中的家具进行交互了。

对了,记得修改提示词:
在这里插入图片描述

在这里插入图片描述
改完记得保存!

UI功能逻辑实现

创建一个脚本文件,然后将写入下面的代码,

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

public class OpenDoor : MonoBehaviour
{
    
    public GameObject LivingRoomLighting;//客厅灯光
    public GameObject BedroomLighting;//卧室灯光
    public GameObject BathroomLighting;//浴室灯光
    public GameObject TableLamp;//床头灯
    public GameObject guideCanvas;//按键指南UI
    public GameObject fire;//壁炉火焰
    public GameObject fire2;//灶台火焰
    public GameObject tv;//电视机播放板
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //灯光控制
        OpenLight();
        //打开关闭按键指南
        if (Input.GetKeyDown("tab"))
        {
            guideCanvas.SetActive(!guideCanvas.activeSelf);
            if (guideCanvas.activeSelf)
            {
                Time.timeScale = 0;
            }
            else
            {
                Time.timeScale = 1;
            }
        }

        //灶火炉火
        if (Input.GetKeyDown("o"))
        {
            fire.SetActive(!fire.activeSelf);
        }
        if (Input.GetKeyDown("p"))
        {
            fire2.SetActive(!fire2.activeSelf);
        }
        //电视
        if (Input.GetKeyDown("t"))
        {
            tv.SetActive(!tv.activeSelf);
        }
        //退出
        if (Input.GetKeyDown("q"))
        {
            SceneManager.LoadScene(0);
        }
    }

    private void OpenLight()
    {
        if (Input.GetKeyDown("1"))
        {
            LivingRoomLighting.SetActive(!LivingRoomLighting.activeSelf);
        }

        if (Input.GetKeyDown("2"))
        {
            BedroomLighting.SetActive(!BedroomLighting.activeSelf);
        }

        if (Input.GetKeyDown("3"))
        {
            BathroomLighting.SetActive(!BathroomLighting.activeSelf);
        }

        if (Input.GetKeyDown("4"))
        {
            TableLamp.SetActive(!TableLamp.activeSelf);
        }
    }

}

完后之后挂载脚本,并赋值脚本变量
在这里插入图片描述


到这里,基本逻辑就已经完成了,可以对灯光、火焰、电视机视频播放进行控制了。

静态光线问题解决

选中场景模型中自带的所有点光源,然后将其Light的Mode值改为Realtime
在这里插入图片描述

然后打开Lighting,选择Environment,点击Generate Lighting
在这里插入图片描述
完成之后就可以控制了。

结语

本节的内容已完成,下一节是最后一部分:菜单界面的现实。

如果在本节内容中遇到问题可以评论区留言,我看到之后会给大家回复解决!下期见,拜拜!

请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿松爱睡觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值