ãã®èšäºã¯äžçŽãŠãŒã¶ãŒã«ã圹ç«ã€ã¯ãã§ãã OSXãWindowsãiOSãAndroidçšã®ãã©ã°ã€ã³éçºã®æçšãªããŒã«ãšãã¥ã¢ã³ã¹ãèæ ®ããŸãã
Unityã§é·æéãããªãåçãããšããã¹ãŠãããŸããããšã¯éããŸããã§ããã çµã¿èŸŒã¿ããŒã«ã¯éåžžã«éãããŠãããã¢ãã€ã«ãã©ãããã©ãŒã ã§ã¯ãã«ã¹ã¯ãªãŒã³ã¢ãŒãã§ã®ã¿ãããªãåçã§ããŸãããããã¯ã¢ã€ã¹ã²ãŒã ã²ãŒã ã§ã¯ãããŸããïŒ æåã¯ããµãŒãããŒãã£ã®ãã©ã°ã€ã³ã䜿çšããŸããã ãã ããå¿ èŠãªæ©èœãæ¬ ããŠãããããã°ãããããã®ä¿®æ£ã¯é·ãéåŸ ããªããã°ãªããŸããã§ããïŒä¿®æ£ãããå ŽåïŒã ãã®ããã
ãã©ã°ã€ã³ãšã³ãŒãã®äœæã¯æçš¿ããŸãã-ç³ãèš³ãããŸããããåæ¥äžã®ç§å¯ã¯ãããŸãããäžè¬çãªååã«ã€ããŠèª¬æããŸãã ãããªãã³ãŒããŒãå®è£ ããããã«ããªãŒãã³ã§ã©ã€ã»ã³ã¹ããªãŒã®WebM圢åŒãåçã§ããvp8ããã³vp9ã³ãŒããã¯ã䜿çšããŸããã ãããªãã¬ãŒã ããã³ãŒãããåŸãYUVã«ã©ãŒã¢ãã«ã®ããŒã¿ãååŸããŸãã 次ã«ãåã³ã³ããŒãã³ããåå¥ã®ãã¯ã¹ãã£ã«æžã蟌ã¿ãŸãã å®éãããã§ãã©ã°ã€ã³ãçµäºããŸãã ããã«Unityèªäœã§ã¯ãã·ã§ãŒããŒã¯YUVãRGBã«ã©ãŒã¢ãã«ã«ãã³ãŒãããŸããããã¯æ¢ã«ãªããžã§ã¯ãã«é©çšãããŠããŸãã
ããªããå°ãã-ãªãã·ã§ãŒããŒã§ããïŒ ãã質åã§ãã æåã«ãããã»ããµã§ã«ã©ãŒã¢ãã«ãœãããŠã§ã¢ãå€æããããšããŸããã ãã¹ã¯ãããã®å Žåãããã¯èš±å®¹ç¯å²ã§ãããããã©ãŒãã³ã¹ã¯ããã»ã©äœäžããŸããããã¢ãã€ã«ãã©ãããã©ãŒã ã§ã¯ç¶æ³ã¯æ ¹æ¬çã«ç°ãªããŸãã ã¯ãŒã¯ã¹ããŒã¹ã®iPad 2ã§ã¯ããœãããŠã§ã¢ã³ã³ããŒã¿ãŒã¯8-12 FPSãæäŸããŸããã ã·ã§ãŒããŒã§ã®è²å€æã25-30 FPSãåãåã£ããšããããã¯æ¢ã«éåžžã®åçå¯èœãªã€ã³ãžã±ãŒã¿ãŒã§ãã
ãã©ã°ã€ã³éçºã®ãã¥ã¢ã³ã¹ã«ç§»ããŸãããã
ããŒãã€ã³ã
Unityçšã®ãã©ã°ã€ã³ãäœæããããã®ããã¥ã¡ã³ãã¯ããªãå°ãªãããã¹ãŠãäžè¬çãªçšèªã§èª¬æãããŠããŸãïŒiOSã®å Žåãç§ã¯çµéšããå€ãã®ãã¥ã¢ã³ã¹ãèŠã€ããŸããïŒã ããã¥ã¡ã³ããžã®ãªã³ã¯ ã
åã°ããããš-çŸåšã®ã¹ã¿ãžãªãšãã©ãããã©ãŒã çšã«åéãããäŸããããŸãïŒiOSãé€ãïŒAppleã¯ããããéçºè ã«äœåãªãéãæããªãã£ãã§ãããïŒã ãµã³ãã«èªäœã¯Unityã®æŽæ°ããšã«æŽæ°ãããŸãããè»èã«ããã©ã€ããããŸããAPIãã€ã³ã¿ãŒãã§ã€ã¹ã¯é »ç¹ã«å€æŽãããå®çŸ©ãããå®æ°ã¯ååãå€æŽãããŸãã ããšãã°ãæ°ããããããŒã䜿çšããå Žæããæ°ããæŽæ°ãååŸããŸããã 次ã«ãæ°ã¥ããŸã§ããã©ã°ã€ã³ãã¢ãã€ã«ãã©ãããã©ãŒã ã§åäœããªãçç±ãèŠã€ããŸããã
SUPPORT_OPENGLES // SUPPORT_OPENGL_ES //
ãããããããã«èæ ®ããå¿ èŠããããã¹ãŠã®ãã©ãããã©ãŒã ã®å¯äžã®éèŠãªãã€ã³ãã¯ãã¬ã³ããªã³ã°ãµã€ã¯ã«ã§ãã Unityã¬ã³ããªã³ã°ã¯ãå¥ã®ã¹ã¬ããã§å®è¡ã§ããŸãã ããã¯ãã¡ã€ã³ã¹ã¬ããããã¯ã¹ãã£ã§æ©èœããªãããšãæå³ããŸãã ãã®ç¶æ³ã解決ããããã«ãã¹ã¯ãªããã«ã¯ã é©åãªã¿ã€ãã³ã°ã§ã³ãŒã«ããã¯ããã«ããIssuePluginEventé¢æ°ããããŸãããã®é¢æ°ã§ã¯ãã¬ã³ããªã³ã°ã«å¿ èŠãªãªãœãŒã¹ã®æäœãå®è¡ããå¿ èŠããããŸãã ãã¯ã¹ãã£ã䜿çšããå ŽåïŒäœæãæŽæ°ãåé€ïŒããã¬ãŒã ã®æåŸã«ã³ãŒã«ããã¯ããã«ããã³ã«ãŒãã³ã䜿çšããããšããå§ãããŸãã
private IEnumerator MyCoroutine(){ while (true) { yield return new WaitForEndOfFrame(); GL.IssuePluginEvent(MyPlugin.GetRenderEventFunc(),magicnumber); } }
èå³æ·±ãããšã«ãã¡ã€ã³ã¹ã¬ããã§ãã¯ã¹ãã£ãæäœããããšãããšãã²ãŒã ã¯DX9 APIã§ã®ã¿ã¯ã©ãã·ã¥ããŸãã
OSX
ããããæãç°¡åã§æããã©ãã«ã®ãªããã©ãããã©ãŒã ã§ãã ãã©ã°ã€ã³ã¯æ¥éã«é²ãã§ãããåæ¹èšå ¥ãç°¡åã§ãã xCodeã§ãProcess-> Unityã«ã¢ã¿ããããŸãã äŒæ©ãå ¥ããããèœäžãããšãã«ã³ãŒã«ã¹ã¿ãã¯ãç£èŠãããã§ããŸãã
èå³æ·±ãç¹ã1ã€ã ããããŸããã Unityã¯æè¿ãããŒãžã§ã³5.3.2ã«æŽæ°ãããŸããã ãšãã£ã¿ãŒã§ã¯ãOpenGL 4ãã¡ã€ã³ã®ã°ã©ãã£ãã¯ã¹APIã«ãªããŸãããå€ãããŒãžã§ã³ã§ã¯OpenGL 2.1ã§ããããçŸåšã¯éæšå¥šã§ãã æŽæ°ãããããŒãžã§ã³ã§ã¯ããšãã£ã¿ãŒã¯åã«ãããªãåçããŸããã§ããã ã¯ã€ãã¯ãããã°ã¯ã glTexSubImage2Dé¢æ°ïŒGL_TEXTURE_2Dã0ã0ã0ãå¹ ãé«ããGL_ALPHAãGL_UNSIGNED_BYTEããããã¡ãŒïŒãGL_INVALID_ENUMãšã©ãŒãè¿ãããšã瀺ããŸããã OpenGLã®ããã¥ã¡ã³ãããå€æãããšã GL_REDã¯GL_ALPHAãã¯ã»ã«åœ¢åŒã眮ãæããããã«ãªããŸãããããã¯OpenGL 2.1ã§ã¯åäœããŸãã...æŸèæã§ããã¯ã¢ããããå¿ èŠããããŸããã
const GLubyte * strVersion = glGetString (GL_VERSION); m_oglVersion = (int)(strVersion[0] â '0'); if (m_oglVersion >= 3) pixelFormat = GL_RED; else pixelFormat = GL_ALPHA;
ãããŠæãäžæè°ãªããšã¯ãOpenGL 4ã§ã³ã³ãã€ã«ãããæçµãã«ãã§ã¯ããã¹ãŠãGL_ALPHAãã©ã°ã§æ£åžžã«æ©èœããããšã§ãã ç§ã¯éæ³ã®ã»ã¯ã·ã§ã³ã§ãã®ãã¥ã¢ã³ã¹ãæžãçããŸããããããã§ã人éçã«ãããããŸããã
Unity Editorã¯ãå€ãããŒãžã§ã³ã®OGLã§å®è¡ã§ããŸãã ãããè¡ãã«ã¯ãã³ã³ãœãŒã«ã«æ¬¡ã®ããã«èšè¿°ããŸãã
Applications/Unity/Unity.app/Contents/MacOS/Unity -force-opengl
䟿å©ãªãŠãŒãã£ãªãã£ã®äžã§ãã°ã©ãã£ãã¯ããŒã«ã®äžéšã§ããOpenGLãããã¡ã€ã©ãŒã«ã€ããŠèšåããããšæããŸãã ããŒã«ã¯ãApple Webãµã€ãã®ãéçºè ãã»ã¯ã·ã§ã³ããããŠã³ããŒãã§ããŸãã ãããã¡ã€ã©ãŒã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã®OpenGLã®ç¶æ ãå®å šã«ç£èŠã§ããŸãããšã©ãŒããã£ãããããã¯ã¹ãã£ã®å 容ïŒãµã€ãºãã¿ã€ãããã©ãŒãããïŒããããªã¡ã¢ãªã®ã·ã§ãŒããŒãšãããã¡ã確èªããããŸããŸãªã€ãã³ãã®ãã¬ãŒã¯ãã€ã³ããèšå®ã§ããŸãã ã°ã©ãã£ãã¯ãæäœããããã®éåžžã«äŸ¿å©ãªããŒã«ã ã¹ã¯ãªãŒã³ã·ã§ããïŒ
ãã®ãããUnity Editorã§1326ãã¯ã¹ãã£ã䜿çšãããŠããããšãããããŸããã
çª
ãã®OpenGLãã©ãããã©ãŒã ã§ã¯ããã©ã°ã€ã³ããŒãžã§ã³ãåé¡ãªãã³ã³ãã€ã«ãããŸããã ããããDirectX 9ã§ã¯ããã«è©³ãã説æããŸãã
1. DirectX 9ã«ã¯ãããã€ã¹ã®çŽå€±ïŒçŽå€±ããããã€ã¹ïŒãªã©ã®ãæ©èœãããããŸãã OpenGLããã³DirectXïŒããŒãžã§ã³10以éïŒã«ã¯ããã®æ¬ ç¹ããããŸããã å®éãã°ã©ãã£ãã¯ãªãœãŒã¹ïŒãã¯ã¹ãã£ãã·ã§ãŒããŒããããªã¡ã¢ãªã¡ãã·ã¥ãªã©ïŒã®å¶åŸ¡ã倱ãããŸãã ãã®ç¶æ³ãåŠçããå¿ èŠããããçºçããå Žåã¯ããã¹ãŠã®ãã¯ã¹ãã£ãå床ããŒããŸãã¯äœæããå¿ èŠããããŸãã ç§ã®èŠ³å¯ã«ãããšãå€ãã®ãã©ã°ã€ã³ããŸãã«ãããè¡ããŸãã ç§ã¯å°ãã«ã³ãã³ã°ãããããšãã§ããŸãããUnityã¹ã¯ãªãããããã¯ã¹ãã£ãäœæãããã®ãã€ã³ã¿ãŒããã©ã°ã€ã³ã«æž¡ããŸãã ãããã£ãŠããªãœãŒã¹ç®¡çå šäœãUnityã«ä»»ãã圌èªèº«ãããã€ã¹ã®æ倱ã®ç¶æ³ã«å¯ŸåŠããŠããŸãã
MyTexture = new Texture2D(w,h, TextureFormat.Alpha8, false); MyPlugin.SetTexture(myVideo, MyTexture.GetNativeTexturePtr());
2.ãã¹ãŠã®æºåãæŽã£ããšæããããšããäºæããªãåé¡ãçºèŠãããŸããã ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããã«ãäžéšã®ãããªã§ã®ã¿ãç»åããªãã»ããä»ãã§è¡šç€ºãããå ŽåããããŸããã
ç»åã®ã¿ã€ãããå€æãããšããšã©ãŒã¯ãããŒã¿ããã¯ã¹ãã£ã«ã³ããŒããã¢ã«ãŽãªãºã ããã¯ã¹ãã£åº§æšããŸãã¯ã©ãããã¯ã¹ãã£ã«é¢é£ä»ããããŠããå¯èœæ§ããããŸãã ããã¥ã¡ã³ãã¯ãDirectXãäœåãªãã€ããè¿œå ããããšã§æé©åã®ããã«ãã¯ã¹ãã£ãµã€ãºãåçåã§ããããšã瀺åããŸããã ãã®æ å ±ã¯æ§é ã«ä¿åãããŸãïŒ
struct D3DLOCKED_RECT { INT Pitch; void *pBits; }
ããã -æŽåãèæ ®ããããã¯ã¹ãã£ã®1è¡ã®ãã€ãæ°ã
ã³ããŒã¢ã«ãŽãªãºã ããããã«ä¿®æ£ãããšãç®çã®çµæãåŸãããŸããïŒäœåãªãã¯ã»ã«ããŒãã§åããŸããïŒã
for (int i = 0; i < height; ++i) { memcpy(pbyDst, pbySrc, sizeof(unsigned char) * width); pixelsDst += locked_rect.Pitch; pixelsSrc += width; }
OpenGLã®ãããã°ã«ã¯ãgDEBuggerãŠãŒãã£ãªãã£ã圹ç«ã¡ãŸããOSXçšã®OpenGL Profilerãšæ©èœã䌌ãŠããŸãã
æ®å¿µãªãããDX9çšã®ãã®ãããªãŠãŒãã£ãªãã£ã¯èŠã€ãããŸããã§ããã ãã®ãããªããŒã«ã®ååšã¯ãããŒã¿ããã¯ã¹ãã£ã«ã³ããŒããéã«ãšã©ãŒãèŠã€ããã®ã«åœ¹ç«ã¡ãŸãã
IOS
ãµã³ãã«ã«ã¯ããã®ãã©ãããã©ãŒã ã®ãµã³ãã«ãããžã§ã¯ãã¯ãããŸããã§ããã ããã¥ã¡ã³ãã«ã¯æçšãªæ å ±ã¯ã»ãšãã©ãªããäž»ã«ãã©ã°ã€ã³ããã®æ©èœãžã®ã¢ã¯ã»ã¹ã«ã€ããŠã®ã¿ã§ãã
éèŠãªåŽé¢ã«ã€ããŠèª¬æããŸãã
1. xCodeã§ãStaticLibã¿ã€ãã®éåžžã®iOSãããžã§ã¯ããäœæããŸãã OpenGLãã¬ãŒã ã¯ãŒã¯ãæ¥ç¶ããŸã-ãã©ã°ã€ã³ãäœæã§ããŸãã
2.æçµçãªãã©ã°ã€ã³ãã¡ã€ã«ã®ååã¯éèŠã§ã¯ãããŸããã Unityã§ã¯ãiOSãã©ã«ããŒã«ãããã¹ãŠã®ãã©ã°ã€ã³ããé¢æ°ãã€ã³ããŒããããŸãã
[DllImport("__Internal")]
3.éèŠãªãã€ã³ã-å¥ã®ãã©ã°ã€ã³ã«åãååã®é¢æ°ãããå Žåããã«ãããã«ãã§ããŸããã ãªã³ã«Unityã¯äºéå®è£ ãèªããŸãã ã¢ããã€ã¹-誰ããã®ãããªååãèããªãããã«ååãä»ããŠãã ããã
4.ãã©ã°ã€ã³ã®ããŒãæã«åŒã³åºãããUnityPluginLoadïŒIUnityInterfaces * unityInterfacesïŒã¯åŒã³åºãããŸããïŒ ãã©ã°ã€ã³ããã€éå§ãããã確èªããçŸåšã®ã¬ã³ããŒããã€ã¹ã«é¢ããæ å ±ãååŸããã«ã¯ã UnityAppControllerããç¶æ¿ããç¬èªã®ã³ã³ãããŒã©ãŒãäœæãããã©ã°ã€ã³ãšRenderEventãéå§ããé¢æ°åŒã³åºããç»é²ããå¿ èŠããããŸãã äœæããããã¡ã€ã«ã¯ãiOSçšã®ãã©ã°ã€ã³ããããã©ã«ããŒã«é 眮ããå¿ èŠããããŸãã é¢æ°ãç»é²ããããã®ã³ã³ãããŒã©ãŒã®å®è£ äŸïŒ
#import <UIKit/UIKit.h> #import "UnityAppController.h" extern "C" void MyPluginSetGraphicsDevice(void* device, int deviceType, int eventType); extern "C" void MyPluginRenderEvent(int marker); @interface MyPluginController : UnityAppController { } - (void)shouldAttachRenderDelegate; @end @implementation MyPluginController - (void)shouldAttachRenderDelegate; { UnityRegisterRenderingPlugin(&MyPluginSetGraphicsDevice, &MyPluginRenderEvent); } @end IMPL_APP_CONTROLLER_SUBCLASS(MyPluginController)
5.ãã©ã°ã€ã³ãè€æ°ã®ç°ãªãã¢ãŒããã¯ãã£ã䜿çšããŠããå Žåãããããåäžã®éçã©ã€ãã©ãªã«çµåããŠå©äŸ¿æ§ãé«ããããšãã§ããŸãã
lipo -arch armv7 build/libPlugin_armv7.a\
-arch i386 build/libPlugin _i386.a\
-create -output build/libPlugin .a
6.ãã¹ãäžã«ãè² ã®ãã¯ã¹ãã£åº§æšãé ç¹ã·ã§ãŒããŒãããã¯ã»ã«ã·ã§ãŒããŒã«è»¢éãããªãããšãããããŸãããåžžã«ãŒããçºçããŸãã ããã©ã«ãã§ã¯ããã¯ã¹ãã£ã¯ã¢ãã¬ãã·ã³ã°ã¢ãŒãCLAMP_TO_EDGEã§äœæãããŸãã ãã®å ŽåãOpenGL ESã¯ãã¹ãŠã[0..1]ã®ç¯å²ã«ã«ããããŸãã ãã¹ã¯ããããã©ãããã©ãŒã ã§ã¯ãããã¯èŠ³å¯ãããŸããã
7.é倧ãªãã°ãèŠã€ãããŸããã ã¹ã¯ãªãããããã°ãæå¹ã«ããŠiOSçšã®ãããžã§ã¯ãããã«ããããšãã²ãŒã ãã¯ã©ãã·ã¥ãããšxCodeãã¯ã©ãã·ã¥ããŸãã ãã®çµæããã°ãã³ãŒã«ã¹ã¿ãã¯ããããŸãã...
iOSãã©ãããã©ãŒã çšã®ãã©ã°ã€ã³ã®ãããã°ã¯æ¥œãã¿ã§ããxCodeã«ã¯ãã¯ã©ãã·ã¥ãããšãã«åžžã«ã³ãŒã«ã¹ã¿ãã¯ããããŸãã ã³ã³ãœãŒã«ã§ã¯ãã¹ã¯ãªãããšãã©ã°ã€ã³ã®äž¡æ¹ã®ãã°ãèªã¿åãããšãã§ããŸãããããžã§ã¯ãã«* .CPPãã©ã°ã€ã³ãã¡ã€ã«ãè¿œå ãããšããã¬ãŒã¯ãå ¥ããŠãå®å šãªlldbãããã¬ãŒæ©èœã䜿çšã§ããŸãã ããããã¹ã¯ãªããã䜿çšãããšããã¹ãŠãæªåããããããã°ãèšé²ããŠãã ããã
Android
Androidçšã®ãã«ãã«ã¯ãã»ãšãã©ã®ããŒã«ãå¿ èŠã§ãã
-C ++ã³ãŒããç·šéããããã®éåžžã®IDEã ç§ã¯xCodeã䜿çšããŸããã ãšã«ãããAndroidã®ãããŒã§çµã¿ç«ãŠãæ¹ãç°¡åã§ãã
-Cã³ãŒããéçã©ã€ãã©ãªã«ãã«ãããããã®NDKã
-Javaãªã©ã®ãã¹ãŠã®ããŒãºãåããAndroid Studioãã¹ã¿ãžãªã¯ãã¢ããªã±ãŒã·ã§ã³ã§äœãèµ·ãã£ãŠããããç°¡åã«èšé²ããããã«å¿ èŠã§ãã
èå³æ·±ãç¹ãèŠãŠã¿ãŸãããã
1. Androidã§ã®ãã©ã°ã€ã³ã®ãããã°ã®ç¶æ³ã¯ããªãæ²ããã®ã§ãããã«ãã°ããã¡ã€ã«ã«æžã蟌ãããšãæ€èšããããšããå§ãããŸãã ãã¡ãããæ··ä¹±ããŠãªã¢ãŒããããã°ã®èšå®ãè©Šã¿ãããšãã§ããŸãããããã«æéã¯ãªããAndroid Studioãä»ããŠãã°ãåç §ããããç°¡åãªæ¹æ³ãéžæããå¿ èŠããããŸããã ãã®ãããandroid / log.hã«ã¯__android_log_vprinté¢æ°ããããprintfãšåæ§ã«æ©èœããŸãã 䟿å®äžãã¯ãã¹ãã©ãããã©ãŒã ãã¥ãŒã§ã©ããããŸãã
static void DebugLog (const char* fmt, ...) { va_list argList; va_start(argList, fmt); #if UNITY_ANDROID __android_log_vprint(ANDROID_LOG_INFO, "MyPluginDebugLog", fmt, argList); #elif printf (fmt, argList); #endif va_end(argList); }
assertããã€ãã¹ããªãããšããå§ãããŸãã ããããããªã¬ãŒãããå ŽåãAndroid Studioã§ã¯å®å šãªåŒã³åºãã¹ã¿ãã¯ã衚瀺ã§ããŸãã
2.ãã®ãã©ãããã©ãŒã ã§ã¯ããã©ã°ã€ã³ã®åœåã®è©³çŽ°ã¯libMyPluginName.soã§ãã ããšãã°ãlibãã¬ãã£ãã¯ã¹ãå¿ èŠã§ãïŒè©³çŽ°ã«ã€ããŠã¯ãUnityã®ããã¥ã¡ã³ããåç §ããŠãã ããïŒã
3. Androidã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¹ãŠã®ãªãœãŒã¹ã1ã€ã®ãã³ãã«ïŒjarãã¡ã€ã«ãŸãã¯zipãã¡ã€ã«ïŒã«ä¿åãããŸãã ä»ã®ãã©ãããã©ãŒã ã®ããã«ãã¹ããªãŒã ãéããŠããŒã¿ã®èªã¿åããéå§ããããšã¯ã§ããŸããã ãããªãžã®ãã¹ã«å ããŠãAndroid apkãžã®ãã¹ãå«ãApplication.dataPathãå¿ èŠã§ãããã®æ¹æ³ã§ã®ã¿ãç®çã®ã¢ã»ãããååŸããŠéãããšãã§ããŸãã ããããããã¡ã€ã«ã®é·ããšãã³ãã«ã®éå§ã«å¯Ÿãããªãã»ãããååŸããŸãã
unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity") assetMng = activity.Call<AndroidJavaObject>("getAssets") assetDesc = assetMng.Call<AndroidJavaObject>("openFd", myVideoPath); offset = assetFileDescriptor.Call<long>("getStartOffset"); length = assetFileDescriptor.Call<long>("getLength");
ãã¹Application.dataPathã«æ²¿ã£ãŠæšæºããŒã«ïŒfopenãªã©ïŒã§ãã¡ã€ã«ã¹ããªãŒã ãéãããªãã»ãããªãã»ããã§ãã¡ã€ã«ã®èªã¿åããéå§ããŸã-ããããããªã§ãã ãããªãã¡ã€ã«ããã€çµäºãããã以äžã®èªã¿åããåæ¢ããããç¥ãã«ã¯ãé·ããå¿ èŠã§ãã
4.ãã°ãèŠã€ããŸããã
s_DeviceType = s_Graphics->GetRenderer();
s_DeviceTypeã«ã¯åžžã«kUnityGfxRendererNullãå«ãŸããŸã ã ãã©ãŒã©ã ããå€æãããšãããã¯Unityã®ãã°ã§ãã Androidã¯å®çŸ©ã§ã³ãŒãã®äžéšãã©ããããããã©ã«ãã§å®çŸ©ãããŠããŸãïŒ
s_DeviceType = kUnityGfxRendererOpenGLES
Androidçšã«éçºãããšãã¯ãã³ã³ãœãŒã«ã§ã®å®æçãªæåãšå®æçãªåæ§ç¯ã®æºåãå¿ èŠã§ãã æåã«Android.mkããã³Application.mkãæ£ããæ§æããå Žåãã¢ã»ã³ããªã«é¢ããåé¡ã¯çºçããŸããã
ãŸããã®ããã«ãããããã¹ãŠã§ãã ç§ã¯æåããæããã§ã¯ãªãã£ããã¹ãŠã®éèŠãªç¹ã«çŠç¹ãåœãŠãããšããŸããã ãã®ç¥èãããã°ãéåžžã®ãã©ã°ã€ã³ã¢ãŒããã¯ãã£ãäºåã«éçºã§ããŸããã³ãŒããäœåºŠãæžãæããå¿ èŠã¯ãããŸããã
çµè«ãšããŠ
äºåçãªèšç®ã«ãããšããã®äœæ¥ã«ã¯2ã3é±éããããŸãããã2ãæããããŸããã ã»ãšãã©ã®å Žåãäžèšã®ãã€ã³ãã®æ確åã«è²»ããå¿ èŠããããŸããã æãéå±ã§é·ãã¹ããŒãžã¯Androidã§ãã éçã©ã€ãã©ãªãšãããžã§ã¯ããåæ§ç¯ããããã»ã¹ã«ã¯çŽ15åããããæ°ãããã°ãè¿œå ããŠãããã°ãè¡ãããŸããã ã³ãŒããŒãè²·ãã ãããŠãææ ¢ããŠãã ããã Unityã®é »ç¹ãªã¯ã©ãã·ã¥ãšããªãŒãºãå¿ããªãã§ãã ããã
ãã®è³æãæçšã§ã貎éãªæéã®ç¯çŽã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã æ¹å€ã質åã¯å€§æè¿ã§ãïŒ
ãæž èŽããããšãããããŸããã