2012-07-30 18:08:15 cynixway 阅读数 2219

也许有一天我还会遇到这个问题

加载图片的时候突然某张出错了

其他的都没问题,WWW就是加载不了它

看看吧,是不是它格式出错了,保存的时候一定要是RGB格式的

犯过这个错误好多次了,大多无意中把图片格式给整成非RGB的

今天在Unity社区看到有人问这个问题,而且他自己也发现了解决方法

是的,RGB

2013-09-25 10:44:24 lihandsome 阅读数 1863

有时候我们在用Unity 3d 开发android项目的时候,需要引入第三方的JAR包,但里面的资源文件读取就会出现问题(JAR包里面的函数去读取JAR包里面的资源出错),这个时候,我们可以这样做:

1,先解压JAR包,把里面的资源文件夹拿出来

2,在Unity项目的Assets文件夹的根目录下面新建一个StreamingAssets文件夹

3,把资源文件夹复制到StreamingAssets文件夹下面就可以了。


2016-03-05 13:36:10 u011244737 阅读数 2874


最近在接SDK的时候,需要从韩国Kakao(类似于QQ和微信)上 ,需要请求好友的头像。

本来是想用uniy 的WWW.LoadFromCacheOrDownload函数的,但是提醒只能出错:WWWCached data can only be accessed using the assetBundle property! 

所以只能用WWW下载了。

实现大意:1.判断是否已经加载过图片。

     2.如果图片未加载过,从网上下载。

     3.如果图片加载过了,从文件中下载。

下面给出自用代码:

if (!completedLoadThumbnail && !string.IsNullOrEmpty (mKakaoFriendData. fInfo.profile_thumbnail_image ))
        {
            if (!File .Exists( Application.dataPath + "/Resources/My/" + mKakaoFriendData.fInfo .profile_thumbnail_image. GetHashCode()))
            {
                StartCoroutine(LoadThumbnail (mKakaoFriendData. fInfo.profile_thumbnail_image ));
            }
            else
            {
                StartCoroutine(LoadLocalImage (mKakaoFriendData. fInfo.profile_thumbnail_image ));
            }
          
        }

private IEnumerator LoadThumbnail (string url)
    {
        WWW www = new WWW((new Uri(url)).AbsoluteUri);
        yield return www;

        if (!string .IsNullOrEmpty( www.error ))
        {
            Debug.Log (string. Format("Failed to load image: {0}, {1}" , url, www.error));
            yield break ;
        }
        Texture2D image = www.texture;
        //    将图片保存至缓存路径
        byte[] pngData = image.EncodeToPNG();
        File.WriteAllBytes (Application. dataPath + "/Resources/My/" + url.GetHashCode(), pngData);
        mthumbnailImage.mainTexture = www.texture;
        completedLoadThumbnail = true ;
    }

  private IEnumerator LoadLocalImage (string url)
    {
        // 已在本地缓存
        string filePath = "file:///" + Application.dataPath + "/Resources/My/" + url.GetHashCode ();
        WWW www = new WWW(filePath);
        yield return www;
        mthumbnailImage.mainTexture = www.texture;
        completedLoadThumbnail = true ;
    }

2016-09-30 14:29:20 COOL_BEAR_XX 阅读数 3382

第一步unity3D导出iOS工程~

如何导出iOS工程,查看网上教程~导出后的文件目录如下

第二步将一些文件导入自己的工程项目中

将Classes 和 Libraries 文件夹以 下面的方式导入自己的工程中

将Data 文件夹以下面的方式导入工程中

第三步删除Native下所有.h文件的引用

删除Native下所有.h文件的引用,注意里面不仅仅只有.h 文件,,还有.cpp文件

第四步删除libil2cpp引用~

第五步添加引用库

添加引用库,注意有三个是optional ~

第六步Build Settings

在 other Linker Flags 添加

-weak_framework CoreMotion -weak-lSystem

在Header Search Path 添加下面这些头文件引用~

SRCROOT/../../iOS/unity2iOSSRCROOTiOSunity2iOS{SRCROOT}/../../iOS/unity2iOS/Classes
SRCROOT/../../iOS/unity2iOS/Classes/NativeSRCROOTiOSunity2iOSClassesNative{SRCROOT}/../../iOS/unity2iOS/Libraries
SRCROOT/../../iOS/unity2iOS/Libraries/libil2cpp/includeSRCROOTiOSunity2iOSLibrarieslibil2cppinclude{SRCROOT}/../../iOS/unity2iOS/Libraries/Plugins/iOS

在Library Search Path 中添加

SRCROOT/../../iOS/unity2iOSSRCROOTiOSunity2iOS{SRCROOT}/../../iOS/unity2iOS/Libraries
${SRCROOT}/../../iOS/unity2iOS/Libraries/Plugins/iOS

在other C Flags 中添加 -DINIT_SCRIPTING_BACKEND=1 同是在 other C++ Flags中出现

改为C99

改PCH

C++做如下设置

跟着下面的图片做设置更改

在user-Defined 添加如下

GCC_THUMB_SUPPORT NO
GCC_USE_INDIRECT_FUNCTION_CALLS NO
UNITY_RUNTIME_VERSION 5.3.4f1
UNITY_SCRIPTING_BACKEND il2cpp

第七步修改PCH文件

把Classes下面的Perfix.pch中的代码全部拷贝到自己项目的PCH 并且在自己的项目的PCH 中添加 #import "UnityAppController.h"

当你走完上面七步之后,下面才是真正的坑开始的地方~ 笔者使用的是unity做Vuforia的开发,其中涉及到的坑相信大家也被坑了好久~ 不过最后笔者得出了两行代码~ 解决了一切问题~

我在unityAppController 中创建了一个Appdelegate,并且把unityView 和Window 传过去了~ 代码后面有人问到再补上~ 欢迎有遇到同样坑的小伙伴在下面提问题,笔者会定时更新文章并把解决问题附上~

2015-11-30 02:03:39 Anzhongliu 阅读数 3254
1.U3D经常莫名奇妙崩溃。

一般是由于空异常造成的,多多检查自己的引用是否空指针。

2.编码切换警告提示。

警告提示:Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings menu commands.
编码格式问题,VS的话直接高级保存方案里面修改,一般我选的是UNICODE(UTF8代签名)MACINTOSH(CR),WINDOW下的可以选WINDOWS的格式,两边都要用的话,推荐选CR。

BUG:IOS下,游戏中的中文显示乱码。
解决方式:同上,修改改代码页的编码。UNICODE(UTF8代签名)MACINTOSH(CR)

3.中文界面解决问题。

monodevelop中文显示解决方法:
http://www.cocoachina.com/bbs/read.php?tid-78563.html
中文Mac系统下MonoDevelop乱码解决:
http://blog.csdn.net/ssihc0/article/details/6796118

4.安装空项目报错

不知道怎么地,在IOS试过一次空项目也在错误提示。大概是说什么“找不到需要的方法”。
重装一下就好了,估计是UNITY文件损坏或者安装不完全出错了。重装吧。

错误提示:MissingMethodException: Cannot find the requested method.

估计是破解U3D造成的,该破解文件可能是不支持WIN7下的……

解决方法:
1、换正版。
2、换个破解文件。

5.平台编译错误或库引用缺失

错误提示:error CS1061: Type `System.IO.FileInfo' does not contain a definition for `Delete' and no extension method `Delete' of type `System.IO.FileInfo' could be found (are you missing a using directive or an assembly reference?)

出了这个错误一般有两个原因了。
1.没有引用相关的库。
2.选错编译平台。(BuildSetting里面的Platform)

错误提示:Could not start compilationWin32Exception:ApplicationName="XXXX\mono.exe",……
[Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法

解决方式:重装UNITY3D。


6.内存资源加载错误问题

错误提示:Trying to reload asset from disk that is not stored on disk

个人是在加载多个ASSETBUNDLE时,用了释放镜像之后,发生了下面的BUG。
这个警告它并没有对游戏流程有任何影响,不过一直跳出来很烦人。我们项目中是因为用Dictionary删除的时候没有删除完整导致的。

解决方案参考:http://blog.sina.com.cn/s/blog_5b6cb95001019ipi.html

个人认为比较大可能是下面的原因:

还没释放完镜像再次加载就出BUG了。将所有ASSETBUNDLE加载完后再同一释放,这样就没问题了。

Unity will only allow you to have a single instance of a particular AssetBundle loaded at one time in your application. What this means is that you can't retrieve an AssetBundle from a WWW object if the same one has been loaded previously and has not been unloaded. In practical terms it means that when you try to access a previously loaded AssetBundle like this:
(BY :http://docs.unity3d.com/Documentation/Manual/keepingtrackofloadedassetbundles.html)


查阅了一下,貌似还有别的问题能导致这提示。下面是相关可以继续深入的资料,可以帮助大家理解U3D的加载和内存管理:
百度搜一下下面两篇文章,应该是出自圣典论坛:
1.【全面理解Unity加载和内存管理】
2.【全面理解Unity加载和内存管理机制之二:进一步深入和细节】

国外论坛的讨论:
http://forum.unity3d.com/threads/49298-Trying-to-reload-asset-from-disk-that-is-not-stored-on-disk

貌似老外也没完全确切搞定这个。


错误提示:Deleting persistent object without writing it first

不论如何你都不应该直接修改一个从assetbundle加载进来的最初数据,一般都要先实例化出来再对其修改。但是引用的东西(例如mesh),这些也不能修改它。若要修改的话,则先复制一份出来。

//复制一份模型出来重新复制,以免直接修改被引用的镜像模型。如下:
Mesh temp = Mesh.Instantiate(smr.sharedMesh) as Mesh;
myMesh.sharedMesh = temp;


7.时间错误、NaN错误

错误提示:transform.position assign attempt for 'XXX' is not valid。Input rotation is {NaN, NaN, NaN, NaN}.

一般是由于游戏暂停将timescale设为0引起的,需要寻找相应用了Time.deltTime等参数的函数修改。否则会导致计算出错报空异常。

详细解决看另一篇文章:
关于NaN(Not a Number)的问题 


8.动画错误
这个错误是4.0新引进动画系统才出现的。
错误提示:Mecanim: BindSkeleton: Cannot find transform"objectname"

解决方式:
1.找到该对应transform"objectname"的模型,直接在检索面板搜索所有相应名字,能容易找到。
2.将模型的面板的Rig部分的动画AnimationType改为none

9.坐标系向量计算的错误提示
错误提示:Look rotation viewing vector is zero

解决方式:一般是由于摄像机的旋转角度造成的。也可能是向量的计算多余而系统提示。我们项目中是强制摄像机90度的时候出现,改成89.9度就没问题了。

具体还有的参考U3D官方论坛:
若没找到解决方法再搜索下。

10.关于AssetServer
错误:明明上传了所有修改,但是别人的机子却没有下载带最新代码。

原因:Merge完代码之后,操作了ignore server change,UNITY默认是以你本机子的为准,若此代码没有再次修改,则AssetServer不认为这个东西被修改过,没有上传那代码。

解决方式:打个空格重新保存一下该代码。

11.关于数据格式的错误

错误提示:Illegal JSON sequence


12.导出WINDOS平台下的项目运行不成功

错误提示:没有找到相应assetbundle的路径
解决方式:因为用了assetbundle加载,而游戏在有中文路径下,assetbundle的路径不能有中文。换个无中文的目录即可。从根源上能解决的方案现在暂时没有。


13.导入资源出错

错误提示:Error while importing package :Couldn't decompress package
解决方式:导入资源出错,大部分都是中文路径惹的祸。将资源换到无中文路径试试。如C/D盘根目录。


14.效率调优报错
错误提示:Non matching Profiler.EndSample (BeginSample and EndSample count must match)


15.IOS下JIT错误问题、编译错误、调试错误

IOS下JIT错误是比较常见的,因为IOS不支持JIT动态编译,所以需要改为合适的AOT静态编译。

错误提示:Attempting to JIT compile method 'System.Linq.OrderedEnumerable`1>:GetEnumerator ()' while running with --aot-only.
解决方式
关于使用了LINQ字典排序的错误解决方法


错误提示:Installation of apps is prohibited by a policy on the device
解决方式:打开一个开关,允许在安装APP,在“设置-》通用-》访问限制-》安装应用程序” 这。


16.U3D寻路信息错误

错误提示:"XXXX" can only be called on an active agent that has been placed on a NavMesh.
解决方式:角色或怪物生成时要直接给模型赋值到相应的地形位置上。因为开始寻路组建没有获取到正确配置而一直报错。


17.Assetbundle资源版本不对

团队协作有时候可能会有人用的U3D版本与其他人不一样,这个是要求先协定好的。大家要用同样的版本作为开发基础。
解决方式:关于assetbundle的问题,4.1版本打出来的包,在4.2读取是不适应的。得注意打包的环境。
没有更多推荐了,返回首页