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,最后展示出来。