18年7月实训unity项目中遇到的问题记录

Posted zhaowenjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18年7月实训unity项目中遇到的问题记录相关的知识,希望对你有一定的参考价值。

1.在一个项目中做好的UI做成预置体后在另一个项目中使用时发现无法响应鼠标的输入事件

解决:在使用预置体的项目中添加EventSystem。

2.使用DontDestroyOnLoad()来避免场景切换后GameObject被销毁存在的问题

假如A场景中有一个GameObject名为player,为了不让player在场景切换到B时消失而使用DontDestroyOnLoad(player),这样会导致场景再次切换回A时,A场景中同时出现两个player,并且两个player在场景切换后都不会消失。player的个数随着切换回A的次数的增加而增加。

解决方法一:

新建一个初始化场景,放在所有的场景之前,初始化场景中放置所有场景中都使用的GameOject并将其添加到DontDestroyOnLoad,并且保证不会跳转回初始化场景,避免重复初始化。

解决方法二:

将全场景使用的GameObject做成预置体,在脚本中实例化(而不是直接放在场景中),后添加到DontDestroyOnLoad,并用一个静态布尔变量标识是否已经实例化过,避免重复实例化。

示例代码:

public class Initializer : MonoBehaviour {
    [SerializeField] private GameObject _playerPrefab;
    [SerializeField] private GameObject _cameraPrefab;
    private GameObject _player;
    private GameObject _camera;
    private static bool isInstantiated = false;

    private void Instan()
    {
        _player = Instantiate(_playerPrefab);
        _camera = Instantiate(_cameraPrefab);
        DontDestroyOnLoad(_player);
        DontDestroyOnLoad(_camera);
        DontDestroyOnLoad(this.gameObject);
    }

    private void Awake()
    {
        if (!isInstantiated)
        {
            Instan();
            isInstantiated = true;
        }
    }

 

注:DontDestroyOnLoad(Object obj)的作用:obj在所有的场景切换后都不会被销毁。

 3.将一个动画类型为Legacy的模型转换为Humanoid类型后动画中人物出现变形,如图:

技术分享图片

转换后unity给出的警告为:

技术分享图片

本来想在blender中打开模型看看,但每次导入模型blender就“未响应”。。。未解决。

4.用slider模拟血条

删去Slider下Handle Slider Area节点,通过设置Slider的Scale值设置血条大小,设置Slider下Fill Area节点及其子节点Fill上Rect Transform组件的Left和Right值为0。

5.野怪AI

AI思路:野怪有不同的行为,如空闲、追击玩家、发动不同的攻击、受伤和死亡等。前三种为主动行为,后两种为被动行为。为每一个主动行为赋一个权重。野怪的行为模式如下:空闲......玩家进入侦测范围,追击玩家......玩家进入部分攻击方式的有效区域,根据权重随机选择有效的攻击或继续追击......玩家进入所有攻击方式的有效区域,根据权重随机选择攻击方式......

为每个行为分配时间(等于该行为对应的动画的时长),野怪处于一个行为中时,播放对应的动画,改变野怪的transform(如果需要),只有被动行为能打断当前行为。

当行为频繁被打断时容易出现bug,未修复。

6.主角锁定怪物后左右移动有时会从地图中”掉落“,未修复。

7.本应显示数秒后才消失的提示框build后一闪而逝(play时正常),未知原因。

8.挥剑的音效本地播放时无异常,加入游戏中后有”呲呲“噪音,未知原因。

以上是关于18年7月实训unity项目中遇到的问题记录的主要内容,如果未能解决你的问题,请参考以下文章

项目实训unity游戏场景的搭建

Unity打包WebGL项目遇到的问题及解决记录

unity3d新建项目之后界面一片空白,怎么解决问题?(有图)

个人项目东北大学软件学院2020级2021年夏季实训项目——东软颐养社区系统

”黑桃A“12月18日团队实训总结

实训-添加tomcat library 遇到的问题