2017-08-23 12 views
1

Unityで作業しているプロジェクトでiOSイメージを使用するには、ファイルパスを取得する必要があります。 は、これまでのところ、私はこのコードを持っている:Unityで使用するiOSイメージのファイルパスを取得する

#pragma mark - UIImagePickerControllerDelegate 
// This method is called when an image has been chosen from the library or taken from the camera. 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *, id> *)info 
{ 
    NSString *type = [info objectForKey:UIImagePickerControllerMediaType]; 
    NSLog(@"type=%@",type); 
    if ([type isEqualToString:(NSString *)kUTTypeImage]) 
    { 
     NSURL* imageURL = (NSURL *)[info valueForKey:UIImagePickerControllerReferenceURL]; 
     NSString *urlString = [imageURL absoluteString]; 

     const char* cp = [urlString UTF8String]; 
     if(cp) 
      strcpy(image_path, cp); 
     else 
     {//If the image path is unasigned give ERROR instead 
      char* error = "ERROR"; 
      strcpy(image_path, error); 
     } 
    } 

    [self dismissViewControllerAnimated:YES completion:NULL]; 

    // UnitySendMessage("GameObject", "VideoPicked", video_url_path); 
    UnitySendMessage(callback_game_object_name, callback_function_name, image_path); 
} 

をこれが返す、次のような形式の画像アドレス:私の知る限り、iPhoneのライブラリに対してのみ有効です

assets-library://asset/asset.JPG?id=92C96E1D-F714-49E6-8074-5B5980FF944F&ext=JPG 

、 実際のパスを取得する方法はありますか、まったく間違ったルートを使用していますか?

ユニティコードは完全にうまくいき、文字列などを受け取るための統一感を得ることができますが、それで何をするべきかはわかりません。

EDIT:この機能は、それが彼の応答のためのパンカジのおかげ

// This method is called when an image has been chosen from the library or taken from the camera. 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *, id> *)info 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"setName.png"]; 

    //save image here and then use that imagePath 
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
    if ([mediaType isEqualToString:@"public.image"]){ 
     UIImage *editedImage = [info objectForKey:UIImagePickerControllerEditedImage]; 
     NSData *imageData = UIImagePNGRepresentation(editedImage); 
     [imageData writeToFile:imagePath atomically:YES]; 
    } 
    NSLog(@"imagePath=%@",imagePath); 
    const char* cp = [imagePath UTF8String]; 
    strcpy(image_path, cp); 

    [self dismissViewControllerAnimated:YES completion:NULL]; 

    UnitySendMessage(callback_game_object_name, callback_function_name, image_path); 
} 
+0

多分私は専門家ではありませんが、ここにはC#コードはありません。 –

+0

あなたがpickerViewからイメージを取得している場合は、そのイメージをそのディレクトリに格納して、そのディレクトリパスをUnity作業に使用できます。 – Pankaj

答えて

0

がPickerViewから画像を取得して、ユニティのためにそのパスを使用し、ドキュメントのディレクトリに保存私のために動作するようになりました。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"setName.png"]; 

//save image here and then use that imagePath 
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
if ([mediaType isEqualToString:@"public.image"]){ 
    UIImage *editedImage = [info objectForKey:UIImagePickerControllerEditedImage]; 
    NSData *imageData = UIImagePNGRepresentation(editedImage); 
    [imageData writeToFile:imagePath atomically:YES]; 
} 

UnitySendMessage(callback_game_object_name, callback_function_name, imagePath); 
関連する問題