2012-05-30 6 views
1

네이티브 플러그인 내에서 리소스 (텍스트 파일, 텍스처 등)를 어떻게로드합니까? 내가 Resources.Load()의 모노 호출을 구현하려고 시도하는 중이지만,이 작업에서 반환 될 Object를 처리하는 방법이 확실하지 않습니다 (성공했다고 가정). 어떤 도움을 크게 주신 것입니다 :).네이티브 플러그인에서 리소스로드 (Unity)

+0

Hmh, 네이티브 플러그인은 iOS 나 Android 같은 플랫폼을 의미합니다 ... 아니면 내가 오해 했습니까? – Kay

+0

아니요, 올바르게 읽었지만 PC와 OSX도 포함되어 있습니다. – hatboyzero

답변

6

플러그인이 네이티브 파일 시스템에서 직접 리소스를로드하는 Unity 지원 방법은 이러한 리소스를 프로젝트의 "StreamingAssets"폴더에 배치하는 것입니다. Unity 기반 응용 프로그램이 설치되면이 폴더의 내용이 기본 파일 시스템에 복사됩니다 (Android 제외, 아래 참조). 네이티브 측에서이 폴더의 경로는 플랫폼마다 다릅니다. 그들이 .JAR의 압축을 해제하여 액세스 할 수 있지만

유니티 4.x 버전에서

이상이 경로는 안드로이드에 당신이 StreamingAssets에 배치 파일은 .jar 파일로 패키징받을 것을 사용할 수

Application.streamingAssetsPath; 같은 주이며, 파일. Application.dataPath + "/StreamingAssets"

  • 아이폰 OS : iOS 및 Android를 제외한

    • 모든 플랫폼 : Application.dataPath + "/Raw"
    • 안드로이드 다음의 경로를 다음과 같이

      유니티 V3.0의에서

      , 수동으로 직접 경로를 구성해야 .JAR은 다음과 같습니다

      012 : 여기

    "jar:file://" + Application.dataPath + "!/assets/" 내가이 문제를 처리하는 데 사용되는 조각이다

    Android의 경우 2.2 이하는 큰 .jar (일반적으로 1MB 이상)를 직접 압축 해제 할 수 없으므로 가장자리 케이스로 처리해야합니다.

    참고 : http://unity3d.com/support/documentation/Manual/StreamingAssets.html 플러스 http://answers.unity3d.com/questions/126578/how-do-i-get-into-my-streamingassets-folder-from-t.htmlhttp://answers.unity3d.com/questions/176129/accessing-game-files-in-xcode-project.html

  • +0

    감사합니다. 이렇게하면 문제가 해결됩니다. :) – hatboyzero

    +0

    Unity의 최신 버전은 http://docs.unity3d.com/Documentation/ScriptReference/Application-streamingAssetsPath.html을 통해 경로를 반환 할 수 있습니다. – ftvs

    +0

    감사합니다. 덕분에 많은 도움을 얻었습니다. –

    3

    나는 사물의 기본 측면과 관련이 질문에 대한 답을 제공하고자합니다.

    아이폰 OS

    당신이 그렇게 같은 네이티브 측면에 StreamingAssets 경로로 얻을 수있는 정말 - 그것은 아주 간단합니다

    내가 사용 좋아하지 않는

    NSString* bundlePath = [[NSBundle mainBundle] bundlePath]; 
    NSString* streamingAssetsPath = [NSString stringWithFormat:@"%@/Data/Raw/", bundlePath]; 
    

    안드로이드 Android에서 스트리밍 자산, IMO에 대한 모든 파일을 복사하는 지저분한 솔루션입니다. 플러그인 디렉토리에있는 docs에 정의 된 디렉토리 구조를 작성하면 더 깔끔하게 정리할 수 있습니다.

    은 그래서 예를 들어 이미지는 유니티 프로젝트에서이 같은 위치 할 수있다 :

    Assets/Plugins/Android/res/drawable/image.png 
    

    그런 다음, 안드로이드에 당신이 이런 식의 리소스 ID에 액세스 할 수 있습니다

    Context context = (Context)UnityPlayer.currentActivity; 
    String packageName = context.getPackageName(); 
    int imageResourceId = context.getResources().getIdentifier("image", "drawable", packageName); 
    

    거기에서 다른 모든 것들을 어떻게 다룰 지 당신에게 달려 있습니다!희망이 도움 :

    관련 문제