![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unity3d (手机网游开发问题总结)
Dongo2
这个作者很懒,什么都没留下…
展开
-
CSVReader
public class CsvController{ static CsvController csv; public List<string[]> arrayData; private CsvController() //单例,构造方法为私有 { arrayData = new List<string[]>();...原创 2019-08-19 19:39:02 · 1383 阅读 · 0 评论 -
Unity Camera 使用场景
ClearFlags:清除信息 Skybox:用天空盒清除一遍再画图 Solid Color:用固定颜色清除 Depth Only:清除深度信息 Don‘t Clear:不清除Culling Mask:渲染层Target Texture:将相机看到的内容渲染到一个rt上这里记录下相机上常用的几个设置,以及使用场景Depth Only 双相机照射UI 和 3D物体 U...原创 2018-05-06 12:04:03 · 613 阅读 · 0 评论 -
Spine+Unity(2D游戏)
2D游戏需要重点考虑的是它的动作,那么2d游戏的动作如何去选择呢?1. 序列帧动画传统而经典的动画方式,然后程序通过代码来控制序列帧的播放顺序达到视觉上的动作2. 骨骼动画序列帧动画有个缺点就是会存在大量的2d图片,图片这个词我想做手游的都应该最敏感,图片多了就会出现内存暴涨。一方面如果图片用少了又会出现动作不协调,有跳帧的感觉。这样内存和美感两方面的矛盾就诞生了我们的骨骼动画。具体什么是骨骼动画原创 2017-07-18 11:02:04 · 1804 阅读 · 0 评论 -
Unity3d 如何优化内存
前言:一提到内存这个东西我相信很多做技术的都头大,我也不例外,如何平衡内存值和手游的表现真的是需要去反反复复去琢磨的。下面记录下我们游戏的内存优化以及一些技巧首先我们需要一个目标,也就是我们需要把我们游戏优化到什么程度算是比较能接受的?这个问题要看游戏类型把,比如我们这种3d arpg的游戏还是带水墨风格的就会非常吃力,因为很多水墨边都是半透明的资源。(换句话说我们这个能优化下来你的也一定可以做原创 2017-04-01 17:46:14 · 4539 阅读 · 0 评论 -
Unity3d 如何优化UGUI
前言:游戏中UI会由很多图片(sprite)组成,如果每个图片都是一个单一的文件,那么在绘图的时候都会使用一个drawcall(老版unityGUI的深坑),而大名鼎鼎的NGUI对其进行了优化使用了atlas的图集原理进行了合并图集减少drawcall。而当我们再次使用UGUI的的时候你当然不会忘了需要打包图集这个工作。下面说说打包图集的一些东西~~以及遇到的问题。如何打包图集?首先你需要开启打包原创 2017-04-01 17:20:02 · 5667 阅读 · 0 评论 -
unity3d libmono最简单的编译
前言:如果你在考虑unity的热更新问题,那么有几种方案可以供你选择 1. 选择lua :可以保证你的ios+android平台更新,缺点:lua调试很蛋疼,不是面向对象的语言(虽然你可以用table来作为假定的面向对象,但是这里我说的是标准的面向对象) 2. 选择反射:可以做到ios+android平台更新,缺点:不能挂载mono脚本到你的prefab上,所有的东西你都需要去通过f原创 2017-02-10 10:52:28 · 3812 阅读 · 0 评论 -
华为荣耀6 安装失败
前言:游戏第二次封测了,很庆幸一测的问题这次都没出现过了,而二测当然也会遇到二测的一些问题,这里记录下华为荣耀6安装游戏失败的解决方案。安装失败开始是在eclipse下链接调试,发现很多日志,而且基本上是说的权限的问题,按照日志解决了权限的添加后,发现仍然没有效果。后来就动用了adb 的一些指令进行检查,最后发现是我们sdk里面的manifest 设置安装路径有问题<manifest xmlns:原创 2017-01-18 17:13:00 · 1418 阅读 · 0 评论 -
场景优化
前言:场景优化网上一大堆,然而东爷肯定不会去抄人家的,东爷是有节操的LOD 是什么鬼首先要说的是著名的LOD,什么是LOD自己百度,简单说下他的实现原理:LOD是根据相机的距离对远距离的物体使用低模,进出使用高模的方式,这样带来的好处就是既不减少表现效果又能减少面数。这时候你是不是在想这样很吊,然并卵,手机上对那些需要处理lod的物体的脚本开销我大概计算了下,都比面数来的直接。(这里并不是绝对的,主原创 2016-12-30 16:26:28 · 726 阅读 · 0 评论 -
Android 7.x 系统路径访问受限
前言:辛苦一年的游戏终于测试了,当然也会遇到各自各样的问题。这里记录下android新系统导致的路径访问问题。以前的做法 我们访问文件的本地路径,都是使用的www去访问相对路径,比如 “data/data//.unity3d” 当然这样在我们的内部测试中是完全没有任何问题的,内部测试的手机都是7.x以下的系统,但是当我们封测的时候,有些玩家的手机是7.x以后买的手机,而现在的厂商一般会配置最新原创 2016-12-27 11:38:37 · 677 阅读 · 0 评论 -
unity解压文件变态提速
unity解压文件变态提速unity文件的随包 绝大多数的手游我相信都会带一部分资源到手机上,这部分资源被称为随包资源,正常情况下的资源会放入Resources下或者StreamingAssets目录下。 Resources目录放的一般为一些基本上不会改变的资源,比如splash图片,icon图片等等(不用解压)StreamingAssets目录下一般放置需要热更的资源,比如AssetBu原创 2016-12-26 10:22:17 · 2998 阅读 · 3 评论 -
减少GC,从Assetbundle缓存开始
之前有个想法,进入战斗之前凡是和战斗没关系的统统给我干掉,因为这个时候要为战斗腾内存,游戏里面最耗的应该也就在这个地方了吧。 but,but,but经过一些列的测试过后,也研究了其他内存和渲染方面比我们消耗更高的游戏后,惊人的发现,有时候并不是我们的优化没做到位,而是做过了,很多东西即使进入战斗了也可以不要去清掉的,不然会造成大量的内存分配和释放,那么系统就会进行GC操作,而GC耗时是非常恐怖的,原创 2016-12-23 17:59:04 · 1077 阅读 · 0 评论 -
手机能承受的drawcall 怎么算?
所谓的draw call 可以简单的理解为调用gpu的一次绘图指令。做unity的都知道drawcall 越小越好(不是绝对的),那么在当前硬件下,我希望保持足够的帧数的drawcall数是怎么计算的呢? 我像很多人跟我一样一知半解,只知道一般都要在150以下才能保持中低段手机玩的比较流畅。经过查询资料这里记录下NIVIDIA 在GDC上提出25K batch/sec 的渲染量会使1GHZ的CPU达原创 2016-12-23 17:47:28 · 5355 阅读 · 0 评论 -
Unity shader造冰女
情景在游戏中有的时候需要角色走到雪地场景,这个时候如果雪飘雪的,角色走角色的就会觉得不是很真实(当然估计没几个玩家会在意),如果角色走到不同的位置(不同的角度,不同的风向),随着时间的加长,角色身上的雪会堆积得越来越多,或者一个刚被杀死的怪物,随着时间越来越长,雪掩盖了他的身体,会不会很真实的感觉呢~这里就要实现这个功能。效果图原理为了实现这个功能,其实主要是利用了法线 和 雪方向来做文章,我们在原创 2016-09-27 18:18:47 · 1486 阅读 · 0 评论 -
打包工具-AssetBundle编辑器
Unity 编辑器可以通过下面的两个函数找到对应的资源。这里要说下filter这个参数public static string[] FindAssets(string filter);public static string[] FindAssets(string filter, string[] searchInFolders);官方说法 这里介绍了这个filter可以是资源的名字,标...原创 2018-06-04 21:10:17 · 1704 阅读 · 0 评论 -
Android模拟器/真机调试
使用ADB的方式比较简单粗暴的调试方式,纯控制台的,调试步骤如下1. 找到你的模拟器所在的位置,然后找到adb的位置,添加到环境变量里面 2. 修改你的cmd的编码方式为65001 3. 修改办法为chcp:65001 或者用我的cmd.reg注册表 4. adb devices 查看你的设备连接上了没有,如果没有连接上可以试着重新打开模拟器 5. adb logcat...原创 2018-06-22 16:32:52 · 2768 阅读 · 0 评论 -
粒子特效发射的模型在手机上丢失
背景 :我们的特效会发射一些模型做一些动作,比如旋转模型之类,这个时候就需要在ParticleSystem 中引用Mesh在编辑器中没有任何问题,在手机上会出现模型丢失的情况,同一个特效下其他粒子会完整播放,但就是模型丢失了. 具体报错信息如下ADB报错信息**No Mesh data avaliable for mesh xxoo on partilce sytsem Parci...原创 2019-05-18 14:26:52 · 2617 阅读 · 2 评论 -
工具:自动清除废弃的ParticleSystem
美术在制作特效的时候,可能会留下大量无效的ParticleSystem(我们的检查下来有几百个无效的),这样会给我们添加渲染压力。这里提供一个简单的工具检查哪些是无效的ParticleSystem并且将其移除。判断的标准从Emit 和 Render是否勾选(根据自己情况定,一般来说是这两个选项)using System.Collections;using System.Collecti...原创 2019-05-20 14:43:53 · 805 阅读 · 0 评论 -
Unity条件属性控制器
今天在国外扒过来的一个很好用的小工具,分享下原文using System;using System.Collections;using System.Collections.Generic;using UnityEngine;[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | ...转载 2019-04-03 16:34:49 · 825 阅读 · 0 评论 -
VS 生产的DLL导入Unity 报错
vs 导出一个dll,放到unity 里面以后,dll 的 Inspector 下显示如下警告信息:This plugin references at least one UnityEngine module assemblies directly(UnityEngine.CoreModule.dll). To assure forward compatibility, only refere...原创 2019-01-21 12:23:26 · 1392 阅读 · 0 评论 -
Unity BuildAssetBundle 报错
报错细节:An Asset is Marked with HideFlags.Don'tSave。然后就是芭芭拉的 一大堆东西解决:找到最下面对应的资源,然后删除该资源中的子节点(我的是大厅的某个预制件下面有个特效报错,我删除了后重新去打包成功)。成功以后再重新去打包删除之前的预制件,就正确了 ...原创 2018-12-22 17:51:47 · 751 阅读 · 0 评论 -
Unity 最新UGUI 屏幕适配
考虑到现在ipx; ipxs的加入,所以现在的屏幕适配方案修改为如下背景图大小设计成 750 * 1629; 安全区域设计成 750 * 1334 ;功能性按钮程序九宫格适配补充:如果需要把ipad的适配也统一做了,那么750*1629 需要修改为 1004*1629 并且把Canva 处动态设置为 以高来进行缩放目前我采用的是 1004 * 1629其中:Canvas 设置处设置...原创 2018-11-12 16:55:24 · 1143 阅读 · 0 评论 -
真机和电脑上的shader差异性报错的解决方案
报错情况:non-square matrices not supported (3x1) at line 15报错解决方案,双击这个地方会指定到你shader的某一行。我这里的 第43行 的代码如下o.worldNormal = mul(unity_ObjectToWorld, v.normal); 修改为 o.worldNormal = mul((float3x3)unity_...原创 2018-07-13 16:34:17 · 918 阅读 · 0 评论 -
Unity Shader (六)模板测试(Stencil)
模板测试的作用:对像素进行一个全方位的输出控制,这句话是我自己的理解。为什么叫全方位的呢?why?? 我们不是有深度测试 和 alpha测试了吗。想想Alpha测试,他针对的是alpha值,而alpha值是美术的图片控制的,有些场合你alpha值不透明但是你还是想他透明,就不好办了。再想想深度测试,他针对的是摄像机的深度,你可以通过渲染队列,以及融合来更改渲染顺序,但是仍然达不到随心所...原创 2018-07-24 11:01:14 · 4084 阅读 · 0 评论 -
再见CSDN, 转移阵地
用CSDN 也不知道多少年了~~~其实很有感情,不过现在微信真的很方便,所以也创建了个微信公众号,准备和大家在那边继续high,想我的就来吧微信公众号: 东爷带你肥(没错那个帅帅的头像能表达本屌的心声)原创 2016-09-08 16:11:56 · 673 阅读 · 0 评论 -
Unity Physics.Raycast 深入理解
Physics.Raycast 理解方法原型与参数说明 其实这个函数有个很藏的很深的地方就是这个layermask, 一般情况我们获取layer的值都会是layermask.nametolayer 这个函数去取得对应的层级,然后把这个int形的参数给到函数使用。但是如果是使用了Physics.Raycast去获取碰撞物的时候,你怎么都获取不到被碰撞的物体。(即使你划线来表示你的射线原创 2016-08-11 14:55:44 · 43952 阅读 · 6 评论 -
Unity 官方bug 状态机动态更换不刷新
事件起因:当切换武器后(更换状态机),状态机对应的行为脚本上的技能绑定id 并没有得到改变,还是切换之前的。理论上是说不通的,因为这个是两个对象的脚本先上两幅图说明下 这里我们改变的就是这个MainActor_Man_Quan 的地方,如果改编成了其他状态机,那么这状态机上的动作对应的技能id依然是老的下图说明了该状态机上的一个动作对应的行为脚本当我原创 2016-08-18 15:09:26 · 1482 阅读 · 0 评论 -
<2> ulua pblua环境搭建+测试
ulua 论坛介绍的4种网络协议文件ulua里面有4种方式作为网络协议文件,我们这里选择了使用pblua, 具体pblua是什么鬼~~自己百度,本文主要借助网友说明pblua的生成,以及遇到的问题。pblua 环境搭建 这篇文章写得非常详细~~基本上搭建都会成功的。这里说下遇到的问题~1> 在生成protoc.exe的过程中,如果没有提示那些错误,但是正常的编译成功了,那么也是原创 2016-01-22 15:41:21 · 1930 阅读 · 0 评论 -
<1> ulua 集成ZeroBrane环境搭建
ulua: 目前国内比较稳定的热更新方案(unity环境下)本文重点在介绍ulua的调试,其他内容请看ulua 论坛,并学习基本的lua语法首先下载ZeroBraneStudio (自己百度下载), 安装后第一步:File/open/ 找到对应的lua目录第二步:配置zaro 环境,最好跟我一样,新建一个usedebug.lua 文件,这样以后想在哪个目录下进行debug就 r原创 2016-01-21 16:41:53 · 3006 阅读 · 0 评论 -
Unity3d 资源断点下载
之前写过一系列Unity3d的上 googleplay 与分包操作,但是在实际应用中你会发现,由于资源包(.obb)可能过大,然后移动网络又可能出于不稳定状态,(2b公司的网络都是这样 的) ,那么你的下载 很可能一天都下不完(因为由于没有一次完整下载过 所以 重复下载)。之前查过一些文章来实现这个功能,但是unity的www根本不支持断点续传的功能,而是一个阻塞的(要么得到我的全部,要么啥都原创 2015-12-02 09:49:09 · 2942 阅读 · 1 评论 -
Unity3d 工具打包完 自动上传到FTP服务器
这个故事是这样开始的~~我们游戏的平台包有好几十个~(没办法游戏太牛逼了),然后每个平台的sdk都需要去不断的测试的,我们内部开发过一款工具用来自动批处理打包untiy - apk,这样可以节省很多时间去等待打包的过程。稍微计算一下 一个apk包(大小250M+)的时间是 10分钟*40个以上,如果让人等着打包的话就!~咳咳了打完了包需要上传ftp服务器给到测试部进行测试,而目前我们的原创 2015-12-16 16:42:54 · 7605 阅读 · 1 评论 -
unity3d 小心Instantiate的名字非你所要
这是一个细节问题,在某sdk中的回调填写的是 A (object) 的名字,但是当我们Instantiate后如果不留意会出现 A(clone)的字样,而sdk这边一般是按照名字自己回调UnitysendMessage这样的会出现调用不到的情况至于去掉这个(clone)方法就很多了比如GameObject Aclone=(GameObject)Instantiate原创 2015-11-19 11:53:30 · 5815 阅读 · 1 评论 -
unity3d - new 不出的单例
可能习惯了写单例的朋友,或者常规的单例模式 会这样做private static Single instance;public static Single Instance(){if (instance == null) {instance = new Single();}return instance;}但是当你继承了MonoBehavio原创 2015-11-19 11:16:51 · 11372 阅读 · 0 评论 -
unity3d apk 重签名帮助提审
最近遇到个问题,apk发给第三方进行一些处理,比如加密,加一些其他的玩意,然后他把我们的keystore给更换了,导致我们这边无法提审了、作为程序员我们只能相信我们自己去重新使用我们的提审时用的keystore了网上找了些文章,基本上都说到了个大概,但是操作起来没有一个可以使用的。最后还是给我试出来了第一步生成 keystool (如果有keystore的无视这一步)第原创 2015-11-20 16:54:06 · 2813 阅读 · 0 评论 -
给NGUI 提供支持英文单词换行功能
NGUI 的原始版本是不支持英文单词换行的,他的判断是针对一个一个字符的。但是现在我们游戏有这个需求,就是当换行的位置是一个单词的时候,就把这个单词放到下一行显示。如下: **修改前:this is ngui font br eak 修改后:this is ngui font break**查阅ngui代码后发现,可以找到UIFont原创 2015-09-07 15:29:26 · 3285 阅读 · 0 评论 -
<2> unity3d 分包与上google play 之具体实战
上一篇已经把准备工作已经做好了。现在开始实战了。激动么么哒有没有!第一步: 下载插件包 (这里收了1分,如果实在没有资源分的可以@我)http://download.csdn.net/detail/pdw_jsp/8612601 下载以后的内容如下图所示 第二步: 设置插件中必须的内容原创 2015-04-20 14:32:01 · 10751 阅读 · 7 评论 -
<3> ulua pblua与网络通讯
其实上一篇文章只是介绍了pblua的生成~具体与真实服务器通讯还是有一段距离的~~比如怎么生成cmd key 怎么序列化,反序列化结构体,怎么广播到处理逻辑等等1 > proto key 的制作与例子(用来标记是什么proto的玩意) 由于lua不支持enum,所以我们会使用table来描述proto key,到时候用于网络的通讯。我们的结构如下,基本上都差不多是这个样子的了原创 2016-01-27 17:01:40 · 1582 阅读 · 0 评论 -
Unity bug 合集(1-50)
1 > Unity 531f 中 特效文件中提示 Invalid AABB aIsFinite(outDistanceForSort)IsFinite(outDistanceAlongView)如果你的特效文件的rotate 不是0,0,0 会出现这个问题,但是可能有些特效本来就是需要旋转的,所以无法改变,查证过后发现是unity 的bug 解决办法:更新到Unit原创 2016-02-17 14:49:33 · 3791 阅读 · 3 评论 -
Unity资源加载的选择(同步/异步)
异步 优点:速度快,与主线程无关, 缺点:调用比较麻烦,因为你不知道啥时候你的资源准备好了,最好的做法也是使用回调,这样回调就会很多,很乱个人感觉管理起来很不舒服。同步 优点:管理起来方便,而且资源准备好了是可以及时返回的, 缺点:是没有异步快综合上诉,最终我选择了 同步,因为我不希望代码不整洁,也不希望写太多的回调函数来通知调用者,资源准备妥当了。那原创 2016-03-17 00:10:10 · 8841 阅读 · 0 评论 -
Unity3d 从零搭建android调试环境
项目到了后期都要进行 甄姬(真机)调试~~然而很多同学或许也会出现这样sdk版本不对,那样jdk版本有问题,各种很恶心的事,下面我就记录下我的全新的调试环境的搭建过程 第一步: android的工具下载地址 http://www.android-studio.org/ 这里面啥都有,我就直接下了Android studio2.0 + jdk8 (64位),这样就一步到位了 (实在不知道咋原创 2016-08-01 15:34:50 · 648 阅读 · 0 评论 -
Unity5x 场景烘焙,动态物体烘焙不上
事情起因是这样的,以前我们都是用的unity4x ,新项目我们准备采用unity5x,而5x一个重大的改进就是烘焙已经完全和之前不同了。新的烘焙技术叫 Realtime GI . 简单说下能达到的效果就是更牛逼了,牛逼在实时过程中会生成一张间接的光照图,会记录物体表面受到的间接的光照信息,这样会有更真实的效果。(暂时没有实验过,后面补上,反正感觉是很牛逼了~~)回到主题~~今天我们场景原创 2016-04-22 15:50:11 · 5200 阅读 · 0 评论