Unity之UI和登陆界面与暂停界面

unity暂停和继续按钮 Unity暂停和继续菜单,还有背景透明设置 目的:在一个游戏场景里设置暂停,并且在暂停后,可选择回到游戏/重新开始的功能效果。 添加各种控件 新建一个空对象GameObject,将它命名为“ButtonPauseMenu”,放在Canves下,用来放所有暂停功能所需要的UI控件。 新建一个image,当作背景使,拖到ButtonPauseMune下。 添加两个Button,分别命名为“But... 阅读详情

Unity————UI和登陆界面与暂停界面

接触了Unity制作不管是程序还是游戏都避免不了UI的制作,但是在网上搜的UI制作的学习过程,额…一言难尽,就像是拼图一样在那一块块搜索然后再将它拼装起来,痛苦万分.因此撰此文以记录我的UI的学习过程.首先要理解的就是UI设计的含义,UI包括登陆界面,暂停界面等等但不只有这些东西.UI称之为(User Interface),是指对软件的人机交互,操作逻辑,界面美观的整体设计.UI设计的目的是操作变得更舒适简单自由.一般来说在游戏中接触最多的UI就是登陆界面,暂停界面,设置界面,教程界面之类的,或者说游戏右上角假如有一个暂停按键(开挂按键)那么它也可以称之为UI.

参考网址:https://docs.unity.cn/cn/current/Manual/UIToolkits.html

一般来说在开始搜索“UI的制作过程”都是在要制作登陆界面或者暂停界面遇到了瓶颈,所以本文将着重于如何快速的利用unity的内置工具制作出一个能用能看的简易UI,用到的是unity教程里的unity UI而不是unity工具包,若在自行查阅文档过程中可以着重看这一部分.

如果目标是为了制作一个登陆界面,那么我们现在最需要的就是一个界面,一个按钮,然后按下这个按钮从界面进入到游戏中(假设游戏为场景SceneGame并且已经制作完成),那么登陆界面的操作就是创建一个新的场景SceneLogin然后里面有个按钮Button,按下Button后场景切换(利用UnityEngine.SceneManagement)切换到SceneGame,这就是一个简单的登陆界面.暂停界面则是设备检测到一个按键被按下(比如Esc),然后让整个游戏暂停,再调出一个界面,上面有两个按钮“恢复游戏”与“退出游戏”,前者让一切恢复正常,后者则是直接退出游戏.这篇文章的目的就是建立这两个界面.

Canvas画布

只要在百度这个离谱的搜索引擎上搜索过unity的UI制作就不会对这个词感到陌生
参考:https://blog.youkuaiyun.com/qq_45548042/article/details/121011915.
一切UI的控制部件都是在canvas进行布置的.令人疑惑不解的是为什么所有的UI组件都需要在canvas上进行布置呢?官方的说法如下:

画布 (Canvas) 是应该容纳所有 UI 元素的区域。画布是一种带有画布组件的游戏对象,所有 UI 元素都必须是此类画布的子项。
创建新的 UI 元素(如使用菜单 GameObject > UI > Image 创建图像)时,如果场景中还没有画布,则会自动创建画布。UI 元素将创建为此画布的子项。
画布区域在 Scene 视图中显示为矩形。这样可以轻松定位 UI 元素,而无需始终显示 Game 视图。
画布 使用 EventSystem 对象来协助消息系统。

以我浅薄的理解,canvs设计的必要性有以下几条:

  • 方便渲染
  • 定位UI元素而不需要显示Game视图
  • 协助消息系统
  • 对不同分辨率的屏幕尽可能显示出一致的界面(锚点功能)

Canvas总共有三种模式,第一种模式(Screen Space-Overlay)是camera镜头里只有canvas,就相当于我们所做的界面操作,unity只会渲染canvas而不会渲染其他的物品,大部分登陆界面用的是第一种模式.第二种模式(Screen Space-Camera)canvas会一直放在camera的前面,显示在镜头前面的一定距离的地方,它不会影响正常场景的渲染,视觉感觉来说就是你面前一直存在一个具有一定大小的界面.第三种模式(World Space),Canvas就被当成了正常的物品对象,跟一个正方体没有什么区别,也不会随着摄像头的移动而移动,个人理解为在制作3D人物上的血条,或者是很炫酷的那种控制界面用这种Canvas比较多.

登陆界面

哦,要不我们开始试试创建一个登陆界面?

首先在“项目”界面右键创建一个新场景(命名为SceneLogin),然后再在左侧的“层级”界面右键-UI-按钮,因为所有的UI组件都会在Canvas里面,所以Unity会自动帮你创建一个Canvas.应该能注意到按钮挂在Canvas下面,而按钮下面还挂着一个Text,这是控制你按钮上的字体显示的.有可能你的按钮上没有显示字体,这是因为你还没有把字体文件库导入进去,字体文件在Text里的Font Asset里进行设置,点开来会发现里面是空.这时候点击菜单栏(就最上面那一排)的窗口——TextMeshPro——导入TMP基本资源,就可以将字体文件导入进去了,此时字体就配置好了.这就是我们的登陆界面,虽然它什么功能都没有,但至少是像一个登陆界面了.里面的细节可以根据手册自己摸索,这不是我们的主线任务,我们就不再进行赘述了

创建按钮参考:https://www.youkuaiyun.com/tags/MtjaUgysNDU3MzMtYmxvZwO0O0OO0O0O.html

按钮控制

现在我们给按钮加上一个脚本附件,我想这个操作对于依葫芦画瓢做过一次项目的人(如果没有建议去做一下)已经是轻车熟路了

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

public class LoadScene: MonoBehaviour
{
    Button LoginButton;
    public void OnClickLogin()
    {
        SceneManager.LoadScene(1);
    }
    private void Awake()
    {
        LoginButton = GetComponent<Button>();
        LoginButton.onClick.AddListener(OnClickLogin);
    }
}

这里面用到了UnityEngine.UI和UnityEngine.SceneManagement,分别用作给按钮加上监听函数,以及对场景进行切换,注意要对(Building Setting 生成设置)进行操作

切换场景参考:https://blog.youkuaiyun.com/weixin_44831924/article/details/100055216
这篇文章里面的一些操作已经过时了,但是里面对生成设置的操作有必要阅读

现在我们一个最最最最基础的登陆界面就制作完成了,但是我们不能只知其然不知其所以然,所以接下来我们会对代码进行深一步的挖掘

SceneManager

SceneManager是对场景进行管理的类,具体的成员和方法详细见附录,用的最多的就是LoadScene,利用场景编号或者场景名称对场景进行切换,这里要注意下其与LoadSceneAsync的区分,可参考这篇文章:https://blog.youkuaiyun.com/qq_42462109/article/details/83096135?spm=1001.2014.3001.5502.在loadscene的过程中还可以指定加载哪种类型的场景,可以加载单模式和附加模式,单模式就是普通的切换场景,附加模式使得屏幕中中包含两个场景,比如说做背包血条栏可以利用这种模式.注意与MergeScene的区别,合并场景会破坏原场景,这是一种破坏性行为.

另外,在用附加模式的加载场景的过程中,要注意活动场景的设置,对应方法是SetActiveScene,因为一些操作都是需要对应活动场景的,比如新建一个Object,烘焙等等操作,都是对应活动的场景,参考https://www.jianshu.com/p/f897ac4376f9

using UnityEngine;
using UnityEngine.SceneManagement;

public class ExampleClass : MonoBehaviour
{
    void Start()
    {
        // Only specifying the sceneName or sceneBuildIndex will load the Scene with the Single mode
        SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive);
    }
}

Button

这里的Button成员指UnityEngine.UI.Button,参考文档:https://docs.unity.cn/cn/2019.2/ScriptReference/UI.Button.html

Button的继承树如下:UI.Button->UI.Selectable->EventSystem.UIBehaviour->MonoBehaviour

MonoBehaviour大家都很熟了,老朋友了,所有的Unity脚本都派生于此类.UIBehaviour手册上写的是具有Unity生命周期函数的受保护实现的基准行为,将里面类似Start之类的方法添加protected关键字,相当于Unity已经实现这些方法并且不希望有人去动它.UI.Selectable为简单的可选择对象(Selectable Object),通过它创造可选择的对象,比如Button.(详细见附录)

对于Button来说,最重要的就是里面的成员onClick,这是一个当按钮被按下后所触发的Unity的事件,它的类型是UI.Button.ButtonClickedEvent,继承于UnityEvent,详情可以看附录里记录的UnityEvent的用法,最常用就是增加监听函数的方法AddListener.

哦如果想用一点复杂的按钮的用法的话,可以尝试了解下OnPointerClick回调函数,它是鼠标按下后的回调函数Unity会传过来一个EventSystems.PointerEventData类型的数据称作eventData,通过重载这个回调函数可以实现更加复杂的代码,参考代码如下:

//Attatch this script to a Button GameObject
using UnityEngine;
using UnityEngine.EventSystems;

public class Example : MonoBehaviour, IPointerClickHandler
{
    //Detect if a click occurs
    public void OnPointerClick(PointerEventData pointerEventData)
    {
        //Use this to tell when the user right-clicks on the Button
        if (pointerEventData.button == PointerEventData.InputButton.Right)
        {
            //Output to console the clicked GameObject's name and the following message. You can replace this with your own actions for when clicking the GameObject.
            Debug.Log(name + " Game Object Right Clicked!");
        }

        //Use this to tell when the user left-clicks on the Button
        if (pointerEventData.button == PointerEventData.InputButton.Left)
        {
            Debug.Log(name + " Game Object Left Clicked!");
        }
    }
}

关于PointerEventData的文档:https://docs.unity.cn/cn/2019.2/ScriptReference/EventSystems.PointerEventData.html

暂停界面

接下来便是制作暂停界面,暂停界面的要求是按下Esc后,游戏停止,并跳出界面,上面应该至少含有两个按钮,一个按钮为Resume用于恢复游戏,另一个按钮为Quit用于退出游戏.参考文章https://blog.youkuaiyun.com/dangoxiba/article/details/122922065

首先我们创建一个Canvas,并且在Canvas下创建两个按钮,分别命名和调整里面的字体内容为Resume和Quit.接着编写以下脚本,并且将其添加为Canvas的组件

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

public class PauseMenu : MonoBehaviour
{
    public GameObject QuitButton;
    public GameObject ResumeButton;
    bool isPause=false;
    // Start is called before the first frame update
    void Start()
    {
        QuitButton.SetActive(false);
        ResumeButton.SetActive(false);
    }
    public void QuitEvent()
    {
        Application.Quit(0);
    }
    public void ResumeEvent()
    {
        isPause = false;
        QuitButton.SetActive(false);
        ResumeButton.SetActive(false);
        Time.timeScale = 1.0f;
    }
    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Escape)&& !isPause)
        {
            isPause = true;
            QuitButton.SetActive(true);
            ResumeButton.SetActive(true);
            Time.timeScale = 0.0f;
        }
    }
}

添加到Canvas组件后可以看到组件PauseMenu上有两个属性,将QuitButton和ResumeButton分别拖到里面去.如图所示
PauseMenu
这次我们不用脚本实现事件添加而是手动去添加,选中Button对象,在鼠标单击的栏目下添加Canvas对象,再在右边的事件下选择Canvas对象中的对应的方法,像Resume按钮就选择ResumeEvent方法,Quit按钮选择QuitEvent方法,如图所示
ButtonClick

将Canvas的图层设置为1,一直将其放置在顶层,至此一个最最最基础的暂停界面就完成了,按下Esc即可暂停.

代码详解

此功能的代码并没有太多的新知识点,Input和GameObject都是Unity基础知识里了解过的东西,GameObject.SetActive设置对象是否活动,设置为True即活动并且可见,设置为False即不活动且不可见,Input.GetKeyDown检测键盘上是否有按键是否按下,Application.Quit退出播放器程序,对于UnityEngine.Application更多的用法详见用户手册https://docs.unity.cn/cn/2021.3/ScriptReference/Application.html

time里的timescale设置对像物理运动的快慢,可以通过增加或减小timescale来实现感觉上的加速和减速.设置Time.timescale=0.0f即可达到停止效果,反之设置Time.timescale=1.0f恢复正常.关于Time的更多用法详见用户手册https://docs.unity.cn/cn/2021.3/ScriptReference/Time-timeScale.html

附录

UnityEventBase

UnityEvent 的抽象基类。
此类为 UnityEvent 提供了基本功能。

备注:不要看中文解释,去看他英文名字以理解其含义,中文解释跟坨?一样

公共函数:

名称解释
GetPersistentEventCount获取已注册的持久性监听器的数量。
GetPersistentMethodName获取索引处的监听器的目标方法名称。
GetPersistentTarget获取索引处的监听器的目标组件。
RemoveAllListeners从事件中删除所有非持久性(即通过脚本创建的)监听器。
SetPersistentListenerState修改持久性监听器的执行状态。

静态函数:

名称解释
GetValidMethodInfo提供了对象、函数名称和参数类型列表;找到匹配的方法。

UnityEvent:UnityEventBase

可以与场景一起保存的0参数持久回调

构造函数
UnityEvent:构造函数。

公共函数:

名称解释
AddListener向UnityEvent添加非持久性监听器。
Invoke调用所有已注册的回调(运行时和持久性)。
RemoveListener从UnityEvent中删除非持久性监听器。

UnityEvent< T0>: UnityEventBase

同:

  • UnityEvent< T0,T1>
  • UnityEvent< T0,T1,T2>
  • UnityEvent< T0,T1,T2,T3>

这相当于UnityEvent的多参数版本,要注意的是如果需要用这种多参数的版本需要对参数进行覆盖,以下将利用两参数版本进行范例:

using UnityEngine;
using UnityEngine.Events;

[System.Serializable]
public class MyIntEvent : UnityEvent<int, int>
{
}
public class ExampleClass : MonoBehaviour
{
    public MyIntEvent m_MyEvent;
    void Start()
    {
        if (m_MyEvent == null)
            m_MyEvent = new MyIntEvent();

        m_MyEvent.AddListener(Ping);
    }
    void Update()
    {
        if (Input.anyKeyDown &amp;&amp; m_MyEvent != null)
        {
            m_MyEvent.Invoke(5, 6);
        }
    }
    void Ping(int i, int j)
    {
        Debug.Log("Ping" + i + ", " + j);
    }
}

UI.Selectable:EventSystems.UIBehaviour

简单的可选择对象 - 可从中派生,以创建可选择控件。

静态变量:

名称解释
allSelectablesList of all the selectable objects currently active in the Scene.

变量:

名称解释
animationTriggers用于此可选择对象的 AnimationTriggers。
animator便捷函数,用于获取 GameObject 中的 Animator 组件。
colors用于此可选择对象的 ColorBlock。
image便捷函数,可将引用的 Graphic 转换为 Image(如果可能)。
interactable用于启用或禁用对可选择 UI 元素(例如,按钮)进行选择的功能。
navigation此可选择对象的 Navigation 设置。
spriteState用于此可选择对象的 SpriteState。
targetGraphic将过渡的 Graphic。
transition过渡的类型,当状态更改时将应用于 targetGraphic。

公共函数:

名称解释
FindSelectable查找此对象旁边的可选择对象。
FindSelectableOnDown查找此对象下方的可选择对象。
FindSelectableOnLeft查找此对象左侧的可选择对象。
FindSelectableOnRight查找此对象右侧的可选择对象。
FindSelectableOnUp查找此对象上方的可选择对象。
IsInteractableUI.Selectable.IsInteractable。
OnDeselect撤消选择并过渡到适当状态。
OnMove确定应在 4 个移动方向中的哪个方向找到下一个可选择对象。
OnPointerDown评估当前状态并过渡至按下状态。
OnPointerEnter评估当前状态并过渡至适当状态。
OnPointerExit评估当前状态并过渡至正常状态。
OnPointerUp评估 eventData 并过渡至适当状态。
OnSelect设置选择并过渡到适当状态。
Select选择此 Selectable 对象。

SceneManagement.SceneManager

运行时的场景管理。

静态变量:

名称解释
sceneCount当前加载的场景总数。
sceneCountInBuildSettingsBuild Settings 中的场景数量。

静态函数:

名称解释
CreateScene在运行时使用给定名称创建一个新的空场景。
GetActiveScene获取当前活动的场景。
GetSceneAt获取 SceneManager 的已加载场景列表中索引处的场景。
GetSceneByBuildIndex从构建索引中获取场景结构。
GetSceneByName搜索已加载的场景,查找包含给定名称的场景。
GetSceneByPath搜索所有已加载的场景,查找具有给定资源路径的场景。
LoadScene按照 Build Settings 中的名称或索引加载场景。
LoadSceneAsync在后台异步加载场景。
MergeScenes这会将源场景合并到 destinationScene 中。
MoveGameObjectToScene将游戏对象从当前场景移至新场景。
SetActiveScene将场景设置为活动状态。
UnloadSceneAsync销毁所有与给定场景关联的游戏对象,并将场景从 SceneManager 中移除。

事件:

名称解释
activeSceneChanged订阅此事件可在活动场景发生变化时收到通知。
sceneLoaded向此事件添加委托,以在加载场景时收到通知。
sceneUnloaded向此事件添加委托以在卸载场景时收到通知。
Unity学习之游戏暂停和界面跳转 欢迎大家来到我的博客http://unity.gopedu.com/home.php?mod=space&uid=3352&do=blog&view=me&from=space 跳转界面操作 使用Application.LoadLevel (加载关卡) 这个函数按照索引加载关卡。在Unity中使用File->Build Settings.....菜单可以看到所有 关卡的索引列表。在你 阅读详情

相关推荐

Unity3d绑定键盘弹出UI

1.在Fairy GUI里制作UI 2.设置为可导出,发布到自己工程存放UI的文件夹里 3.在Hierarchy里新建一个UIPanel,通过package Name来添加制作的UI; 4.新建C#,fasong 绑定在场景里的任意一个物体上,代码如下: using System.Collections; using System.Collections.Generic; u...

xiaoxiaoting1010的博客 1454

35_ue4[UI]04_UI动画和暂停游戏

游戏暂停

zhang2362167998的博客 1465

【Unity项目】仿《空洞骑士》项目

PS:本系列笔记将会记录我此次在北京学习Unity开发的总体过程,方便后期写总结,笔记为随缘更。 笔记内容均为 自己理解,不保证每个都对 本次笔记为记录大概三周左右小组项目的每日进度完成情况。 为这几个月的知识总和。 此次笔记不会贴出代码,只是纯粹的记录随笔。 如果最后没有发出,大概就是因为我又鸽了吧。 自我封装: UI框架,动画框架, WWW框架, 粒子特效框架等。 仿造游戏为《空洞骑士》,...

不积跬步,无以至千里 7099

[学习记录] Unity设置游戏暂停时继续播放UI动画的方法

设置Animator的UpdateMode为UnscaledTime

FX_DY的博客 1592

Unity性能监控实战:手把手教你实现可配置的FPS显示器

帧率(FPS)是衡量实时应用流畅度的核心指标,其原理是通过计算单位时间内渲染的画面数量来反映系统性能。在游戏开发与图形应用中,稳定的高帧率直接关系到用户体验,而帧率监控则是性能优化与调试的基石。通过实时监控FPS,开发者可以快速定位渲染瓶颈、评估优化效果,并确保应用在不同硬件平台上的流畅运行。在Unity引擎中,实现一个轻量、可定制且跨平台的FPS显示器,是连接性能监控原理与工程实践的关键技术。本文将结合**性能优化**与**移动平台**等核心场景,详解如何利用Unity内置API与UI系统,从零构建一个功

weixin_30493401的博客 3804

Unity编程软件介绍

Unity 17 win 编程软件介绍及使用WIN 编程软件介绍 在这里主要显示了Unity的初始界面,Projects 主要显示在本地或Unity云中存储的项目,以及显示最近打开的项目。而在Learn 中则为一些Unity网络上供参考学习的范例。Sign In 为登陆所注册的Unity账户,该账户可以用来存储项目等操作。现在你可以选择点击New 来创建一个新的项目或者点击Open 来打开一

ZNWhahaha的博客 7729

如何使用Unity制作一款自己喜欢玩的游戏demo(Unity萌新的进阶技巧)

相信每个Unity萌新手机上都有一款自己喜欢玩的游戏。本文将描述自己做的一款模拟【崩坏3】手游demo的一点经验。(安卓端)首先需要熟练组件的应用,说白了就是跟据你游戏的类型,需要使用哪些API。其次规划一下自己的游戏制作计划。(使用插件或自己写工具类脚本提高开发效率,不会实现的功能上网自学)b站视频展示链接:https://www.bilibili.com/video/av20541736/本游...

PalmAdorableTiger的博客 1万+

Unity游戏新手引导系统设计:从架构到实现的沉浸式体验指南

新手引导系统是游戏开发中用户体验工程的核心组成部分,它通过精密的交互设计在游戏初期建立玩家认知、传授规则并激发兴趣。其原理在于将引导逻辑与游戏进程深度耦合,采用事件驱动与数据配置分离的架构,实现灵活触发与流程控制。该技术的核心价值在于显著降低新玩家流失率,提升用户留存与沉浸感。在应用场景上,它广泛适用于各类移动端、PC及主机游戏,尤其对于复杂玩法或开放世界游戏至关重要。本文聚焦于Unity引擎下的实现方案,深入探讨了如何通过可配置的条件系统、优雅的高亮聚焦技术以及叙事融合等进阶技巧,打造一套真正以玩家为中心

WGH100817的博客 594

Unity3D学习之(游戏跳转和字体的设置)

欢迎大家光临我的博客!一、Application跳转 ①跳转到登录视图Application.LoadLevel("Login"); if (GUI.Button(new Rect(60, 360, 40, 20), "注册"))        {            Application.LoadLevel("Login");     //点击注册跳转到登陆界面        } 登录视图:...

Baron_Ldx的专栏 1889

【VR开发】【Unity】Pico VR开发基础超详细

Pico是国内如今发展迅猛VR设备独角兽,致力于C端消费娱乐级别的VR头戴,Pico Unity Integration SDK就是为Pico平台的VR开发者们提供的,集成了丰富XR能力接口,包括设备输入、追踪、混合现实等的开发插件。XR Origin下挂载的PXR_Manager的Inspector界面上勾选Open Scene Fade就可以定义游戏中画面的淡入淡出效果,推荐设置5,Black(颜色任意),5000。

每日出拳老爷子的博客 2538

STM32驱动MG996R舵机的PWM控制与闭环原理

舵机是一种典型的模拟闭环伺服系统,其核心是通过电位器反馈实现角度位置的自动校正。工作原理基于负反馈控制:目标PWM脉宽决定期望角度,电位器输出实时反馈实际角度,控制电路计算偏差并驱动电机消除误差。该机制赋予舵机强带载能力与抗干扰性,是机器人、云台、智能执行器等场景的关键执行单元。在嵌入式开发中,STM32通过定时器生成标准20ms周期、0.5–2.5ms脉宽的PWM信号,需严格遵循电气规范,并解决PA15引脚SWJ复用冲突、定时器重映射及CCR精度计算等关键问题。本文深入解析MG996R舵机控制全流程,涵盖

weixin_42600407的博客 559

Unity安装全攻略:从Hub到插件配置的避坑指南

在现代游戏与交互应用开发中,开发者常面临环境配置复杂、多版本管理困难等问题。作为跨平台开发的主流引擎,Unity通过统一的开发工具链,降低了项目搭建门槛。其核心组件Unity Hub扮演“版本管家”角色,支持多版本共存与项目匹配,有效解决版本冲突,同时确保项目在不同编辑器间无缝切换。选择LTS长期支持版可保障项目稳定性与技术更新,避免因新版本不稳定导致的开发风险。合理配置模块如Android Build Support,可规避后续构建APK时的环境错误。从编辑器安装到插件部署,掌握科学流程能大幅提升开发效率

weixin_33971977的博客 446

数控弯管机xyz转换ybc的算法_花了一年时间开发的三维弯管机交互式转档软件(三维管子模型UG,SOLIDWORK,PRO/E文件转成YBC)...

在弯管机加工中,由管子模型生成可直接进行弯管加工的YBC数据可以大大提高弯管编程过程.传统的做法是先用dxf数据文件(用autocad绘制管子的轴心线数据)转出XYZ数据,然后由XYZ数据转成YBC数据,而且大部分厂家对文件版本以及软件做管方式都有不少限制,这大大花费了用户的时间跟精力.随着企业的信息化管理以及不断的技术升级,传统用autocad线条模式来描述管子的方式正在被用户用PRO/E,UG...

weixin_29065959的博客 1960

按钮、计时器-unity3D游戏入门

1.上午先拷贝安装包 注册账号 登入主界面 1h 然后学习一个函数OnGUI,三个模块Label,Button,RepeatButton, 体会按钮用法,点击按钮出现一张图片,点击第二个按钮 图片消失 2.做一个计时器 3.下午丰富计时器,条件语句,循环语句,做一个登陆界面,老师强调美观,可以自己改变字体以及颜色 4.今天的课后题: 简述基于unity3d开发游戏的优势,以及热门游...

Quest_sec的博客 2782

python电子学会三级的零碎笔记

‌示例‌:如果s = ['a', 'b', 'c'],则' '.join(s)+'\n'的结果是'a b c\n',写入文件时所有元素会在一行内显示,每个元素之间用空格分隔,末尾有一个换行符。(2) '\n'.join(s)‌:如果s = ['a', 'b', 'c'],则'\n'.join(s)的结果是'a\nb\nc',写入文件时每个元素会占据文件的一行。(1) ' '.join(s)+'\n'‌:这种方式首先将列表s中的每个元素通过空格连接成一个字符串,然后在字符串末尾添加一个换行符\n。

xzal12的博客 690

避坑!!!Stata双重机器学习(DML)遇到的问题及解决方式

除了上述代码,我还在Anaconda Navigator图形界面来更新conda,更新过的小伙伴应该都知道,这个过程非常漫长,我大概经历了2-3天,在这个过程中电脑一直运行,但是很不幸,无论哪种方式,最终都没有更新到最新版本。安装成功之后,我抱着试一试的心态再次在stata18MP中运行,没有想到,这次竟然运行成功了!我之前一直用的是stata17MP版本,在运行DML的时候,代码一直出错,我以为是python路径没有设置好的原因,就各种在python上面下功夫,经过各种查找后,确定DML必须要在。

王樰沫 3845

Unity引擎IL2CPP与鸿蒙方舟运行时深度对接技术解析

在跨平台应用开发领域,运行时环境是连接高级语言与底层系统的关键桥梁。其核心原理在于将托管代码转换为目标平台可执行的原生指令,实现应用逻辑与操作系统服务的无缝交互。这一技术的价值在于能够大幅降低多平台适配成本,提升应用性能与安全性。在游戏开发场景中,主流引擎如Unity通常采用IL2CPP技术将C#代码预先编译为C++,再针对不同平台进行优化。鸿蒙操作系统作为新兴的分布式平台,其方舟运行时提供了独特的应用模型与系统服务接口。将Unity的IL2CPP后端与鸿蒙方舟运行时对接,需要深入理解两者在应用生命周期管理

weixin_34268579的博客 330

Qt图形视图框架实战:QGraphicsScene、QGraphicsView与QGraphicsItem的深度应用

本文深入解析Qt图形视图框架的核心组件QGraphicsScene、QGraphicsView与QGraphicsItem的实战应用。通过“舞台、镜头与演员”的比喻,清晰阐述了三者的协作关系,并详细介绍了场景管理、多视图同步、交互增强、自定义图形项绘制与性能优化等高级技巧,帮助开发者高效构建复杂的交互式图形界面。

weixin_29251337的博客 263

Unity塔防抽卡游戏开发实战:从模块到完整项目的工程化指南

在Unity游戏开发中,模块化设计和系统解耦是构建可维护、可扩展项目的核心工程实践。其原理在于通过分层架构(如数据层、管理层、逻辑层、表现层)分离关注点,并利用事件驱动通信机制降低耦合度。这种工程化方法的技术价值在于提升代码复用性、简化调试流程,并支持团队协作开发。在移动端游戏开发场景中,面对塔防、抽卡等复杂系统整合时,采用ScriptableObject进行数据配置、GameManager进行全局状态管理,能有效解决功能孤岛问题。本文以塔防与抽卡玩法融合为例,详细讲解如何通过事件系统和对象池等技术,将零散

weixin_33895475的博客 523

RAG-Anything 实战:构建企业级多模态知识图谱问答系统

本文详细介绍了如何利用RAG-Anything构建企业级多模态知识图谱问答系统,解决跨模态文档处理的痛点。通过架构设计解析、部署实战指南和典型业务场景解决方案,帮助企业实现高效的知识管理和智能检索,提升决策效率。

weixin_29089057的博客 385

LVGL core disp显示设计(lv_disp.c)

lv_disp.c当前显示页面的配置scr_act在原始的LVGL是以screen的概念存在,但我们还是习惯叫它为一个页面提供获取top_layer、sys_layer、prev_scr图层接口配置主题管理默认的主题管理是递归查找的,实际项目中因此页面的复杂性,虽然也兼容了此主题管理的方案,但还是推荐使用单页面自行管理主题的方案壁纸设置多页面切换的动画支持计算无用户操作时间清理显示缓存。

Bigan(安)的博客 2330

Unity基础知识

五大视图 Scene:场景视图 用来改变、添加物体和改变物体位置 Game:游戏视图 用来看效果和运行时操作的 Hierarchy:层级视图 用来创建物体,并依次罗列出来 Project:工程视图 用来存放这个工程中所有的物体(场景、资源、文件夹) Inspector:检视视图 用来显示某一个物体具体的属性 下面是对Unity内各个工具的作用进行解释 File文件 New Scene:创...

YJF19997的博客 742

ESP32与DS18B20温度传感器的数据采集与告警系统

并且,通过自定义的微信告警功能,我们可以及时收到温度超过阈值的告警消息。随着物联网的快速发展,传感器在各种应用场景中发挥着重要的作用。本文将介绍如何使用ESP32微控制器与DS18B20温度传感器结合,通过串口输出和Web服务器实现温度数据的采集和监控,并使用自定义微信告警功能。上传完成后,打开串口监视器,您将看到ESP32连接到Wi-Fi网络,并开始监测温度。在您的计算机或移动设备上,打开一个Web浏览器,并输入ESP32的IP地址。在浏览器中输入ESP32的IP地址后,您将看到显示当前温度的页面。

loop_class349的博客 2242

02_登录窗口

当开启禁用时,按钮图片会显示DisabledSprite的图片并且悬停或点击不会产生效果。添加的五张图片也代表,默认,悬停时,鼠标左键点击时,鼠标左键点击松开时,鼠标左键点击后。介绍按钮组件Button的Transition的四种选择变化状态。GameRoot为游戏的根节点在整个游戏中都不会被删除。创建一个空节点作为UI根节点下的登录场景UI。接下来在LoginWnd下创建登录窗口的公告按钮。点击播放后就能看见按钮随着设置的帧进行颜色变化。在游戏的根节点下创建UI的根节点Canvas。

weixin_69360830的博客 1012

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

面向高级 Unity 开发者的数据导向技术栈简介【译】

—StickyLock Games 制作人 Jamel Ziaty。

m0_63330263的博客 53

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Unity登录场景实战:从协议设计到真机联调的完整链路

登录是客户端与服务端首次网络握手的关键环节,本质是一套涵盖请求发起、凭证校验、Token分发、状态同步与场景跳转的完整状态机。其技术核心在于HTTP短连接通信模型的选择、JSON协议的可读性与跨平台兼容性、Token分级存储的安全策略,以及UnityWebRequest的超时控制、错误分类与异步加载机制。在MOBA类实时游戏开发中,Login不仅关乎功能实现,更直接影响首屏成功率、弱网容错能力与用户转化率。本文聚焦Unity引擎下真实项目级登录模块落地,覆盖协议定义、网络层封装、UI反馈动效、真机调试技巧等

weixin_33824363的博客 285

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: unity入门API————最常用的基类总结
下一篇: 超快速入门制作网站----Flask快速学习笔记
StrangeStranger
博客等级 码龄6年 24粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值