Итак, я пытаюсь передать код C# в единстве и объективном коде c в Xcode. Вот мой код:Unity падает при использовании собственного кода
text.h
extern "C" {
int textTotexture(int hello,int world);
}
text.mm
int textTotexture(int hello,int world){
NSString *myString =[[NSString alloc] init];
NSSize size = [myString sizeWithAttributes:0];
NSImage* newImage = [[NSImage alloc] initWithSize: size];
[newImage lockFocus];
/* if you have a second image you're going to overlay on top of the first, do the same except use NSCompositeSourceOver as the operation */
//NSRect myRect = NSMakeRect(0,0,size.width,size.height);
//[myString drawInRect:myRect withAttributes:0];
[newImage unlockFocus];
//NSData *imageData = [newImage TIFFRepresentation];
//NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:imageData];
//NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:1.0] forKey:NSImageCompressionFactor];
//imageData = [imageRep representationUsingType:NSPNGFileType properties:imageProps];
//int len = [imageData length];
//memcpy(data, [imageData bytes], len);
return hello+world;
}
вызова функции:
[DllImport("CubePlugin")]
public static extern int textTotexture(int s, int w);
Debug.Log(textTotexture(1,2));
Основная связь хорошо, как журнал отладки возвращает 3 но как только я добавляю функциональный код, единство просто падает. Я подозреваю, что какой-то родной код просто не заканчивается.
Я только что узнал, что проблема возникает, когда я добавляю фокус блокировки и теряю фокус обратно. Что мне делать, чтобы избежать этого, но достичь моей цели?
Когда вы говорите «он падает», что на самом деле происходит? EXC_BAD_ACCESS? Исключение Objective-C? – JeremyP
Привет, Джереми, когда я говорю об аварии, я имею в виду, что он просто замерзает, и мне нужно заставить выйти из единства. –
Звучит как тупик. Вы используете этот код в основном потоке? Если нет, у вас большие проблемы, потому что API рисования Cocoa не является потокобезопасным. – JeremyP