1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
extern
"C"
{
const
char
* _GetImage()
{
NSLog
(@
"I am in Begin"
);
UIImage *myUIImage = [UIImage imageNamed:@
"Test.jpg"
];
NSData
*imageData = UIImagePNGRepresentation(myUIImage);
NSArray
*paths =
NSSearchPathForDirectoriesInDomains
(
NSDocumentDirectory
,
NSUserDomainMask
,
YES
);
NSString
*documentsDirectory = [paths objectAtIndex:0];
NSString
*filePath = [documentsDirectory stringByAppendingPathComponent:@
"Test.jpg"
];
//Add the file name
NSLog
(@
"filePath %@"
,filePath);
[imageData writeToFile:filePath atomically:
YES
];
return
MakeStringCopy([filePath UTF8String]);
}
}
|
这里用到的还是dllimport方法,需要先在xcode中写好来,原理就是叫一个UIImage文件变成字符串,然后写入到指定的文件,最后把这个文件的位置给抛出来
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[DllImport (
"__Internal"
)]
private
static
extern
String _GetImage();
public
Texture2D texture2D;
void
Start () {
texture2D =
new
Texture2D (200, 200);
imagePath = GetImage();
byte
[] imageBytes = File.ReadAllBytes(imagePath);
texture2D.LoadImage(imageBytes);
}
void
OnGUI () {
GUI.Button (
new
Rect(20,20,100,100),texture2D);
}
public
static
String GetImage()
{
if
(Application.platform != RuntimePlatform.OSXEditor)
{
return
_GetImage();
}
else
{
return
@"Hello"
;
}
}
|
交给unity使用,unity中通过texture2d的loadimage方法把字符串重新拼接变成了texture2d,最后展示出来。