Unity 用户手册Advanced构建 iOS 插件

2024-06-16 00:58

本文主要是介绍Unity 用户手册Advanced构建 iOS 插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


构建 iOS 插件
本页具体说明晰 iOS 渠道的本地代码插件。


为 iOS 创立带本地插件的使用程序
按以下办法在 C# 文件中定义外部办法: 
[DllImport ("__Internal")]
private static extern float FooPluginFunction ();
设定 iOS 编辑器的构建方针
将本地代码源文件增加至生成的 XCode 工程“类”文件夹(工程更新不会掩盖此文件夹,但必须备份本地代码)。
假如运用 C++ (.cpp) 或 Objective-C++ (.mm) 完成插件,那么有必要要确保您创立的功用运用 C linkage 办法声明,防止呈现称号重整疑问。


extern "C" {
  float FooPluginFunction ();

以 C 或 Objective-C 编写的插件无需此项操作,由于这些言语不运用称号重整。


从 C# 运用插件
iOS 本地插件只要在部署到实践设备之后才干被调用,因此,主张一切本地代码的类函数都运用一个额外的 C# 代码层包装。此代码应检查 Application.platform,而且仅在使用程序在设备上运转时调用本地类函数;使用程序在编辑器中运转时将回来虚值。检查 Bonjour 浏览器使用程序的事例。


从本地代码中调用 C# / JavaScript
Unity iOS 经过 UnitySendMessage:
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
撑持有限的本地管理回调功用。这项功用包含三个参数:方针游戏目标 (GameObject) 的称号、调用这一目标的脚本类函数以及传递给所调用类函数的信息字符串。


已知约束:


只要契合以下命名规矩的脚本类函数才干被本地代码调用: function MethodName(message:string)
UnitySendMessage 调用为异步,而且有一帧的延时。
主动插件集成
Unity iOS 以有限的办法撑持主动插件集成。在资本 (Assets)/插件 (Plugins)/iOS 文件夹内一切扩展名为.a、.m、.mm、.c、.cpp 的文件都将主动合并到生成的 Xcode 工程。可是,合并经过将资本 (Assets)/插件 (Plugins)/iOS 中的文件符号连接至结尾目的地来完结,这能够影响部分作业流程。.h 文件不包含在 Xcode 工程树内,可是它们将呈如今方针文件夹中,从而完成 .m/.mm/.c/.cpp 文件编译。


注意:当前不撑持子文件夹。


iOS 提示
在 iOS 中保管和非保管的调用十分占用处理器。尽量防止在一帧内调用多个本地类函数。
如上所述,运用调用设备本地代码的 C# 层包装本地类函数,并在编辑器中回来虚值。
本地类函数回来的字符串值应为 UTF-8 编码,而且分配在堆上。这种字符串可在 Mono 上进行自在编组调用。
如上所述,XCode 工程的“类”文件是极好的保留本地代码的方位,由于工程更新之后,它不会被掩盖。
另一个极好的储存本地代码的方位是资本 (Assets) 文件夹或其子文件夹。只需从 XCode 工程中将引证增加至本地代码文件:右击"类 (Classes)" 子文件夹并挑选“增加 (Add)->现有文件 (Existing files)...”。
示例
Bonjour 浏览器实例
点击此处可检查运用本地代码插件的简略实例。


这一实例演示了如安在 Unity iOS 使用程序中调用 objective-C 代码。此使用程序完成了十分简略的 Bonjour 客户端。 此使用程序包含 Unity iOS 工程(Plugins/Bonjour.cs 是本地代码的 C# 接口,而 BonjourTest.js 则是完成使用程序逻辑的 JS 脚本)和应增加至内置 XCode 工程的本地代码(资本 (Assets)/ 代码 (Code))。



本Unity3d教程文章由游戏蛮牛Cocos2D教程整理推荐

这篇关于Unity 用户手册Advanced构建 iOS 插件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065076

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚