Objective-C - 从Aruts制作Unity插件

时间:2016-09-26 15:42:01

标签: ios objective-c unity3d

从完整的Xcode项目制作插件的最佳方法是什么?我尝试过从Objective-C"中获取简单的数据。插件的类型,但这看起来要复杂得多。

我试图看看我是否可以在Unity游戏中获得Aruts by Simon Epskamp的功能。 Aruts的作用是将麦克风听到的音频输出到耳机/扬声器。

到目前为止,我尝试过的是导入IosAudioController.mIosAudioController.h(重命名为TestScript),以及我自己的" extern"从所述文件访问启动和停止功能的文件。

虽然它确实运行没有错误,但我听到的都是快速点击声音,根据评论,函数recordingCallback没有被调用。

我还试图接受一些Aruts main.m并尝试将其粘贴到Unity项目的main.mm中,但没有成功。我可以通过代码更新此内容。

编辑:

这是我的TestExtern.h

#import <Foundation/Foundation.h>
#import "TestScript.h"

void TestStartAudioRec() {
    [iosAudio start];
}

void TestStopAudioRec() {
    [iosAudio stop];
}

这是Unity项目main.mm

#include "RegisterMonoModules.h"
#include "RegisterFeatures.h"
#include <csignal>
#import "TestScript.h"

static const int constsection = 0;

void UnityInitTrampoline();

const char* AppControllerClassName = "UnityAppController";

int main(int argc, char* argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    iosAudio = [[TestScript alloc] init];

    @autoreleasepool
    {
        UnityInitTrampoline();
        UnityParseCommandLine(argc, argv);

        RegisterMonoModules();
        NSLog(@"-> registered mono modules %p\n", &constsection);
        RegisterFeatures();
        std::signal(SIGPIPE, SIG_IGN);

        int retval = UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String:AppControllerClassName]);

        NSLog(@"After retval");

        [pool release];

        return retval;
    }

    return 0;
}

#if TARGET_IPHONE_SIMULATOR && TARGET_TVOS_SIMULATOR

#include <pthread.h>

extern "C" int pthread_cond_init$UNIX2003(pthread_cond_t *cond, const pthread_condattr_t *attr)
{ return pthread_cond_init(cond, attr); }
extern "C" int pthread_cond_destroy$UNIX2003(pthread_cond_t *cond)
{ return pthread_cond_destroy(cond); }
extern "C" int pthread_cond_wait$UNIX2003(pthread_cond_t *cond, pthread_mutex_t *mutex)
{ return pthread_cond_wait(cond, mutex); }
extern "C" int pthread_cond_timedwait$UNIX2003(pthread_cond_t *cond, pthread_mutex_t *mutex,
                                               const struct timespec *abstime)
{ return pthread_cond_timedwait(cond, mutex, abstime); }

#endif // TARGET_IPHONE_SIMULATOR && TARGET_TVOS_SIMULATOR

也许它有问题。将其与Aruts的main.m进行比较:

#import <UIKit/UIKit.h>
#import "IosAudioController.h"

int main(int argc, char *argv[]) {

    NSLog(@"main");
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    iosAudio = [[IosAudioController alloc] init];

    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];

    return retVal;
}

有什么建议吗?

0 个答案:

没有答案