c# - 适用于 Unity 的 iOS 插件
<p><p>我知道为 Unity 创建插件的基本前提是为要从 Unity 中调用的所有类创建一个包装器。但是,我发现的所有文档和示例都需要一个相应的 .cpp(如果是 c++)或 .mm(如果是 Objective-c)文件。</p>
<p>但是,我正在尝试为一些不包含任何源文件的 nativeiOS 代码创建插件。我只能访问四个头文件和一个 .a 文件。 <a href="https://github.com/Estimote/iOS-SDK" rel="noreferrer noopener nofollow">Which I have gotten from here.</a> </p>
<p>现在,因为我没有要包装的任何 .mm 文件,我有点困惑如何将这些文件引入 Unity,以便我可以从内部调用它们。以前有人做过吗? </p>
<p>在将 4 个头文件和 .a 文件作为插件引入 Unity 时,有人可以指出一些文档或任何可以帮助我的东西吗?</p>
<p>请记住,我没有可以访问的源文件。只有头文件本身。 </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>你不需要源文件,甚至头文件都不需要,只要你知道函数的声明。</p>
<p>如 <a href="http://docs.unity3d.com/Documentation/Manual/PluginsForIOS.html" rel="noreferrer noopener nofollow">Building Plugins for iOS</a> 中所述:</p>
<p>1.) 将您的 .a 文件放入 Assets/Plugins/iOS 中</p>
<p>2.) 查看头文件以获取所需的函数签名,例如</p>
<pre><code>void RegisterUnityIPodCallbackListener (const char* gameObject, const char* method);
</code></pre>
<p>3.) 通过以下方式在 C# 类中声明 <code>RegisterUnityIPodCallbackListener</code>:</p>
<pre><code>public class IPodHandler {
private static extern void RegisterUnityIPodCallbackListener (string gameObject, string method);
public static void MyRegisterUnityIPodCallbackListener () {
if (Application.platform == RuntimePlatform.IPhonePlayer) {
RegisterUnityIPodCallbackListener (GAME_OBJECT, METHOD);
}
}
}
</code></pre>
<p>4.) 在适当的位置调用:</p>
<pre><code>IPodHandler.MyRegisterUnityIPodCallbackListener ("MyCallbackGameObject", "MyCallbackMethod");
</code></pre>
<p><strong>常见陷阱:</strong></p>
<ul>
<li>您不应在 Assets/Plugins/iOS 中构建目录结构,否则文件不会被复制到生成的 Xcode 项目中</li>
<li>在编辑器播放器中进行测试时提供备用解决方案</li>
</ul></p>
<p style="font-size: 20px;">关于c# - 适用于 Unity 的 iOS 插件,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/19704537/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/19704537/
</a>
</p>
页:
[1]