.NET 帮助

NativeUI C#(开发者指南)

发布 2024年四月3日
分享:

本地用户界面 是《侠盗猎车手》中 C# 开发人员必不可少的框架。 (一般临时人员) 修改社区。它简化了嵌套菜单系统和自定义横幅的创建过程,以其友好的用户界面和屏幕分辨率深受《侠盗猎车手》MOD 制作者的喜爱。原生 UI MOD 设计用于创建快速、类似 Rockstar 的菜单,与《侠盗猎车手》中简易嵌套菜单的风格和响应速度相呼应。 (一般临时人员) 游戏在本教程中,我们将了解 NativeUI 是什么,以及如何将其与游戏集成。 IronPDF 用它。

NativeUI 的基础知识

NativeUI 在轻松创建嵌套菜单方面表现出色,这对于希望创建复杂界面而无需复杂的基于事件的回调和项目描述代码的修改者来说是一大福音。它还能适应不同的屏幕分辨率,确保菜单在不同的显示器和许多旧版本上都具有视觉吸引力。NativeUI 的优势之一是其无障碍嵌套菜单系统,允许开发人员毫不费力地创建带有自定义指示按钮的复杂菜单结构。对于初学者来说,NativeUI wiki 上的文档是一个宝贵的资源,它提供了菜单创建和版本浮动方面的逐步指导。

在 Visual Studio 中设置 NativeUI

在 Visual Studio 中的初始设置包括下载 NativeUI 库并将 .dll 文件整合到您的 MOD 项目中。NativeUI 库是一个已发布的软件包,可通过流行的 C# 软件源获取,因此很容易将其集成到项目中。安装非常简单。设置 NativeUI 时,请确保您的开发环境和 NativeUI 库之间的版本兼容,以获得最佳性能。

NativeUI C#(如何为开发人员工作):图 1 - NativeUI

创建你的第一个菜单

使用 NativeUI 创建第一个菜单是令人兴奋的一步。该库的设计非常简单易用,您可以轻松添加项目描述、简单按钮甚至自定义横幅。对于初学者来说,建议从基本脚本开始,随着对框架的熟练掌握,再逐步添加更复杂的功能。下面是一个创建自带纹理的基本菜单的简单示例:

using NativeUI;
public class YourFirstMenu : Script
{
    private MenuPool _menuPool;
    private UIMenu mainMenu;
    public YourFirstMenu()
    {
        _menuPool = new MenuPool();
        var mainMenu = new UIMenu("NativeUI", "SELECT AN OPTION");
        _menuPool.Add(mainMenu);
        AddMenuItems(mainMenu);
        _menuPool.RefreshIndex();
//mouse controls
        Tick += OnTick;
        KeyDown += OnKeyDown;
    }
    private void AddMenuItems(UIMenu menu)
    {
        var item1 = new UIMenuItem("Item 1", "Description for Item 1");
        menu.AddItem(item1);
        menu.OnItemSelect += (sender, item, index) =>
        {
            if (item == item1)
            {
                // Do something when Item 1 is selected
            }
        };
    }
    private void OnTick(object sender, EventArgs e)
    {
        _menuPool.ProcessMenus();
    }
    private void OnKeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.F5 && !_menuPool.IsAnyMenuOpen()) // Our menu on/off switch
            mainMenu.Visible = !mainMenu.Visible;
    }
}
using NativeUI;
public class YourFirstMenu : Script
{
    private MenuPool _menuPool;
    private UIMenu mainMenu;
    public YourFirstMenu()
    {
        _menuPool = new MenuPool();
        var mainMenu = new UIMenu("NativeUI", "SELECT AN OPTION");
        _menuPool.Add(mainMenu);
        AddMenuItems(mainMenu);
        _menuPool.RefreshIndex();
//mouse controls
        Tick += OnTick;
        KeyDown += OnKeyDown;
    }
    private void AddMenuItems(UIMenu menu)
    {
        var item1 = new UIMenuItem("Item 1", "Description for Item 1");
        menu.AddItem(item1);
        menu.OnItemSelect += (sender, item, index) =>
        {
            if (item == item1)
            {
                // Do something when Item 1 is selected
            }
        };
    }
    private void OnTick(object sender, EventArgs e)
    {
        _menuPool.ProcessMenus();
    }
    private void OnKeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.F5 && !_menuPool.IsAnyMenuOpen()) // Our menu on/off switch
            mainMenu.Visible = !mainMenu.Visible;
    }
}
Imports NativeUI
Public Class YourFirstMenu
	Inherits Script

	Private _menuPool As MenuPool
	Private mainMenu As UIMenu
	Public Sub New()
		_menuPool = New MenuPool()
		Dim mainMenu = New UIMenu("NativeUI", "SELECT AN OPTION")
		_menuPool.Add(mainMenu)
		AddMenuItems(mainMenu)
		_menuPool.RefreshIndex()
'mouse controls
		AddHandler Me.Tick, AddressOf OnTick
		AddHandler Me.KeyDown, AddressOf OnKeyDown
	End Sub
	Private Sub AddMenuItems(ByVal menu As UIMenu)
		Dim item1 = New UIMenuItem("Item 1", "Description for Item 1")
		menu.AddItem(item1)
		AddHandler menu.OnItemSelect, Sub(sender, item, index)
			If item = item1 Then
				' Do something when Item 1 is selected
			End If
		End Sub
	End Sub
	Private Sub OnTick(ByVal sender As Object, ByVal e As EventArgs)
		_menuPool.ProcessMenus()
	End Sub
	Private Sub OnKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
		If e.KeyCode = Keys.F5 AndAlso Not _menuPool.IsAnyMenuOpen() Then ' Our menu on/off switch
			mainMenu.Visible = Not mainMenu.Visible
		End If
	End Sub
End Class
VB   C#

该脚本设置了一个包含一个项目的基本菜单,并处理其选择。NativeUI 采用基于事件的回调,这意味着菜单中的操作将触发特定事件,从而使用户界面具有交互性和响应性。

增强用户互动

NativeUI 的一个重要方面是它能创建功能强大且用户友好的菜单。该库支持鼠标控制。除鼠标控制外,NativeUI 还拥有全面的控制器支持,可确保使用游戏控制器轻松浏览菜单。您还可以通过添加自定义指导按钮来进一步增强用户交互,这些按钮可以引导用户完成菜单选项并支持控制器。

定制菜单

NativeUI 允许高度自定义。您可以用自己的纹理和自定义横幅来装饰菜单,让它们拥有与众不同的独特外观。添加这些个性化元素不仅能让菜单更具视觉吸引力,还能为用户创造更身临其境的体验。

private void CustomizeMenu(UIMenu menu)
{
    menu.SetBannerType("texture.png"); // Custom banner texture
    menu.ChangeItemColour("Item 1", System.Drawing.Color.FromArgb(255, 0, 0)); // Red color for Item 1
}
private void CustomizeMenu(UIMenu menu)
{
    menu.SetBannerType("texture.png"); // Custom banner texture
    menu.ChangeItemColour("Item 1", System.Drawing.Color.FromArgb(255, 0, 0)); // Red color for Item 1
}
Private Sub CustomizeMenu(ByVal menu As UIMenu)
	menu.SetBannerType("texture.png") ' Custom banner texture
	menu.ChangeItemColour("Item 1", System.Drawing.Color.FromArgb(255, 0, 0)) ' Red color for Item 1
End Sub
VB   C#

IronPDF:C# PDF Library

NativeUI C#(如何为开发人员工作):图 2 - IronPDF

IronPDF 是一个用于处理 PDF 文件的 .NET 综合库。它能让开发人员创建新的 PDF 文件、编辑现有的 PDF 文件并转换为 PDF 文件。 HTML 转 PDF使其成为任何需要处理 PDF 文档的 C# 应用程序的必要库。

在 NativeUI 应用程序中实施 IronPDF

将 IronPDF 集成到带有 NativeUI 的 C# 项目中需要在 Visual Studio 项目中添加 IronPDF 包。这可以通过 Visual Studio 中的 NuGet 包管理器轻松完成。设置完成后,您就可以在使用 NativeUI 创建 UI 元素的同时使用 IronPDF 的功能。

在一个应用程序中,您需要根据 NativeUI 界面的用户输入生成一份报告。下面介绍如何使用 IronPDF 实现这一目标:

using IronPdf;
using NativeUI;
public class ReportGenerator
{
    private MenuPool _menuPool;
    private UIMenu mainMenu;
    public ReportGenerator()
    {
        _menuPool = new MenuPool();
        mainMenu = new UIMenu("Report Generator", "SELECT AN OPTION");
        _menuPool.Add(mainMenu);
        AddPdfGenerationOption(mainMenu);
        _menuPool.RefreshIndex();
        // Event handlers for menu
    }
    private void AddPdfGenerationOption(UIMenu menu)
    {
        var generateReportItem = new UIMenuItem("Generate Report", "Create a PDF report");
        menu.AddItem(generateReportItem);
        menu.OnItemSelect += (sender, item, index) =>
        {
            if (item == generateReportItem)
            {
                CreatePdfReport();
            }
        };
    }
    private void CreatePdfReport()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1><p>Report details...</p>");
        pdf.SaveAs("Report.pdf");
        // Notify user that the PDF report has been generated
    }
}
using IronPdf;
using NativeUI;
public class ReportGenerator
{
    private MenuPool _menuPool;
    private UIMenu mainMenu;
    public ReportGenerator()
    {
        _menuPool = new MenuPool();
        mainMenu = new UIMenu("Report Generator", "SELECT AN OPTION");
        _menuPool.Add(mainMenu);
        AddPdfGenerationOption(mainMenu);
        _menuPool.RefreshIndex();
        // Event handlers for menu
    }
    private void AddPdfGenerationOption(UIMenu menu)
    {
        var generateReportItem = new UIMenuItem("Generate Report", "Create a PDF report");
        menu.AddItem(generateReportItem);
        menu.OnItemSelect += (sender, item, index) =>
        {
            if (item == generateReportItem)
            {
                CreatePdfReport();
            }
        };
    }
    private void CreatePdfReport()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1><p>Report details...</p>");
        pdf.SaveAs("Report.pdf");
        // Notify user that the PDF report has been generated
    }
}
Imports IronPdf
Imports NativeUI
Public Class ReportGenerator
	Private _menuPool As MenuPool
	Private mainMenu As UIMenu
	Public Sub New()
		_menuPool = New MenuPool()
		mainMenu = New UIMenu("Report Generator", "SELECT AN OPTION")
		_menuPool.Add(mainMenu)
		AddPdfGenerationOption(mainMenu)
		_menuPool.RefreshIndex()
		' Event handlers for menu
	End Sub
	Private Sub AddPdfGenerationOption(ByVal menu As UIMenu)
		Dim generateReportItem = New UIMenuItem("Generate Report", "Create a PDF report")
		menu.AddItem(generateReportItem)
		AddHandler menu.OnItemSelect, Sub(sender, item, index)
			If item = generateReportItem Then
				CreatePdfReport()
			End If
		End Sub
	End Sub
	Private Sub CreatePdfReport()
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1><p>Report details...</p>")
		pdf.SaveAs("Report.pdf")
		' Notify user that the PDF report has been generated
	End Sub
End Class
VB   C#

结论

NativeUI C#(如何为开发人员工作):图 3 - 许可证

在 C# 应用程序中集成 IronPDF 与 NativeUI 是一种强大的组合,可显著增强功能和用户体验。无论是创建商业报告、教育工具还是综合数据表格,这一组合都为开发人员提供了一个强大的平台,以构建复杂而高质量的应用程序。通过创造性和深思熟虑的实施,这种集成的潜在应用是广泛而多样的。

开始使用 IronPDF 的 免费试用 并探索其全部潜力。当您准备好投入使用时,许可证起价仅为 $749 - 对于如此强大的功能来说,这只是一个很小的代价!

< 前一页
C# Virtual 关键字(对开发者的作用)
下一步 >
C# PostgreSQL(对开发人员的工作原理)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,840,061 查看许可证 >