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

相关文章

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核