栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity问题记录

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity问题记录

持续更新中,最近更新:2022-4-14

1.获取其他类的公共变量

比如我在GameObject A上挂载了脚本scriptA,编写scriptB时想要调用scriptA中的变量(此处举例为 public int num)。
那么我在B中可以先定义一个public GameObject objA;
然后在方法中通过 int dataA =objA.getComponent().num;就可以获取到num的值。

2.检测输入的逻辑值

public static float GetAxis(string axisName);
例如:
float moveX=Input.GetAxisRaw(“Horizontal”);//水平方向A:-1,D:1,无输入为0
axisName可在引擎的Edit-Project Settings-Input Manager中查看

3.Vscode 编译时没有出现unity相关提示 (1).Net Framework版本不对

编辑-项目设置-Player-Api兼容级别查看

vscode中csproj文件中查看

framework部署地址

选择开发人员工具包,下面的中文(简体)那些都是拓展语言包,没有开发人员工具包无法发挥作用

vscode也会在这里提示你(此为正常运行),如果缺失会显示Attempted to update project that is not loaded,也就是说加载framework失败,不会出现unity的相关代码补全

4.游戏内暂停的实现

网上一般是选择timescale设置为0,但是update内的方法依然会做出响应。比如角色移动时贴图状态会发生变化,仅是timescale=0的话,输入移动键虽然不会使玩家位移,但仍会使其贴图进行相应变化。这里谈谈我自己的思路。
timescale=0,同时断开玩家的输入。玩家影响游戏的方式均是通过输入,因此断开输入就保证了游戏不再受外界影响,timescale=0也使游戏自身的时间停止流动,实现了所谓的暂停。
那么我们就可以将所有的键盘输入事件放在一个类中,通过具体场景实现按键的不同功能,以此能进行更多拓展,比如我打开一个菜单,那么这时就可以断开地图场景的键盘事件,连接菜单场景的键盘事件,就像wasd选择选项而不再是移动
实现的方式有很多,我举个例子

public int mode = 0;//根据场景切换
    void Update() 
    {
            switch(mode)
            {
                case 1://键盘按下的键
                    {
                        if (Input.GetKeyDown(KeyCode.W))
                            Debug.Log("W");
                        if (Input.GetKeyDown(KeyCode.A))
                            Debug.Log("A");
                        if (Input.GetKeyDown(KeyCode.S))
                            Debug.Log("S");
                        if (Input.GetKeyDown(KeyCode.D))
                            Debug.Log("D");
                        break;
                    }
                case 2://二维平面场景的方向
                    {
                        if (Input.GetKeyDown(KeyCode.W))
                            Debug.Log("+y");
                        if (Input.GetKeyDown(KeyCode.A))
                            Debug.Log("-x");
                        if (Input.GetKeyDown(KeyCode.S))
                            Debug.Log("-y");
                        if (Input.GetKeyDown(KeyCode.D))
                            Debug.Log("+x");
                        break;
                    }
            }    
    }
    

如果所有键盘事件均在此类中,则case=0相当于断开玩家的键盘输入途径

5.按钮的键盘选中

在菜单中通过wasd或上下左右(受项目设置的输入管理器影响)选择按钮(或是其他可选目标)
unity按钮自带导航
可视化之后能在场景中看到其关系

导航通过水平和垂直方向进行选择,explicit则是自定义上下左右的目标

一般得先进入选中状态才能通过键盘进行切换,这时我们可以给想要默认选中的游戏对象添上这句代码
你还可以通过给button挂上event trigger组件来添加选中事件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901826.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号