Comunidad orientada al desarrollo de videojuegos

Unity3D–NGUI 3.0.4 para WinRT–Reflection Support

‘System.Delegate’ does not contain a definition for ‘CreateDelegate’

image

 

Si has actualizado la versión de NGUI a la 3.0.4 y quieres exportar a Windows Store, te encontraras con un error de scripting de NGUI y no podrás exportarlo. Desde la versión 3.0.X estamos teniendo problemas con NGUI en la plataforma de Windows Store debido a que no soporta Reflection. ArenMook ha ido solucionando los problemillas que ha ido encontrando, pero con cada versión sale alguno nuevo, la excusa que pone es que no tiene ni Windows 8 ni WP8 para probarlo y que es un fallo de Unity3D, recomienda que abramos bugs en la pagina de soporte de Unity3D para ver si ellos se hacen cargo del problema… Vamos a intentar solucionar el de la última versión.

Hay un error en el script EventDelegate.cs, el código original es este:

   1: Callback Get ()

   2:     {

   3: #if REFLECTION_SUPPORT

   4:         if (!mRawDelegate && (mCachedCallback == null || mCachedCallback.Target != mTarget || GetMethodName(mCachedCallback) != mMethodName))

   5:         {

   6:             if (mTarget != null && !string.IsNullOrEmpty(mMethodName))

   7:             {

   8:                 mCachedCallback = (Callback)System.Delegate.CreateDelegate(typeof(Callback), mTarget, mMethodName);

   9:             }

  10:             else return null;

  11:         }

  12: #endif

  13:         return mCachedCallback;

  14:     }

 

El problema viene al hacer el CreateDelegate, así que vamos a meter una directiva de compilación para controlar cuando estamos compilando para WinRT y así evitar el error.

 

   1: Callback Get()

   2:     {

   3: #if REFLECTION_SUPPORT

   4: #if !UNITY_EDITOR && UNITY_METRO

   5:        return mCachedCallback;

   6: #else

   7:         if (!mRawDelegate && (mCachedCallback == null || mCachedCallback.Target != mTarget || GetMethodName(mCachedCallback) != mMethodName))

   8:         {

   9:             if (mTarget != null && !string.IsNullOrEmpty(mMethodName))

  10:             {

  11:                 mCachedCallback = (Callback)System.Delegate.CreateDelegate(typeof(Callback), mTarget, mMethodName);

  12:             }

  13:             else return null;

  14:         }

  15: #endif

  16:  

  17: #endif

  18:         return mCachedCallback;

  19:     }

 

Esto es un Workaround (ñapa) hasta que decidan sacar una versión estable.

, , , ,

Leave a Reply