【Unity3D游戏开发】
文章平均质量分 62
Teng的世界
北京奇迹部落网络科技有限公司MiracleStudio成员
展开
-
【Unity3D游戏开发】material与sharedMaterial的区别 (三八)
如果你需要修改模型材质的颜色,或者是修改材质Shader的一些属性, 通常情况是用获取模型的Renderer组件,然后获取它的material属性。举个简单的例子,修改颜色或者直接更换shadermaterial.color = Color.red;material.shader = Resources.Load(“Shader/Alpha-Diffuse”, typeof(S转载 2016-04-20 13:39:58 · 3225 阅读 · 0 评论 -
【Unity3D游戏开发】`UnityEditor' could not be found Are you missing a using directive ... (二九)
using UnityEditor; 之后无法Building,会出错 .using UnityEditor; 之后无法Build,出错,不导出时在编辑器里是没有报错的,运行也正常,导出时,却提示error CS0246: The type or namespace name `UnityEditor' could not be found. Are you missing a u原创 2015-12-23 17:26:40 · 9690 阅读 · 1 评论 -
【Server】高性能的消息队列 (三)
最近,在为我的游戏服务器进行性能优化,而我在性能优化的过程中,首先是减少程序中锁的使用,一眼过去,发现消息队列是线程之前争锁之常地。虽然我们使用的是并发包里,性能高的并发队列(服务器是用java语言),虽然并发包在锁的设计上到了最优,采用细粒度加速,但是不可否认,在生成线程和消费线程之间的锁争用总是会消耗一定性能,降低效率。 说干就干,动手设计一个更高性能的消息队列。可是该如何动手呢?这转载 2015-11-12 23:02:14 · 1223 阅读 · 1 评论 -
【Server】弱网络下的游戏服务器设计 (二)
【高阶】弱网络下的游戏服务器设计1、背景随着手游市场的到来,越来越多的手机游戏通过移动网络和游戏后台通信。移动网络相对传统有线网络存在网速低、不稳定的特点,而且目前是没有技术可以规避这个问题。因此发生在手机游戏上最常见的问题就是网络延迟高、频繁的掉线,为了提升游戏的玩家体验,目前客户端的主要做法有:(1) 网络超时机制:当网络回包超过一定时间后,客户端不会一直等待,当做转载 2015-11-12 22:33:20 · 1656 阅读 · 0 评论 -
【Server】游戏服务器相关文章收藏 (一)
从事于手游客户端,但是难免会有网络相关需求,备份一下:fsplove520 对于网络的一些见解http://fsplove520.iteye.com/category/324862原创 2015-11-12 22:53:56 · 709 阅读 · 0 评论 -
【Unity3D游戏开发】C#和Objective-C数据交互 (二五)
iOS真机上运行,经常需要第三方库,也难免需要C#和Objective-C交互,其实很简单,直接上例子:一.C#的接口,调用ObjC中的函数using UnityEngine;using System.Collections;// No.1using System.Runtime.InteropServices; public class SOpenUDID { /原创 2015-12-05 01:18:06 · 6903 阅读 · 0 评论 -
【Unity3D游戏开发】How to queue a heartbeat to get faster when an enemy is near (二四)
IEnumerator heartbeat_function(){ heartbeatsound.play(); delay = vector3.distance(player_position, slender_man_position); //delay = delay / 2 to make it happen twice as much //delay = delay *原创 2015-11-12 20:36:09 · 636 阅读 · 0 评论 -
【Unity3D游戏开发】System.Collections.Generic.ICollection`1.CopyTo 错误 (二三)
使用Unity,编辑器模式没有问题,iOS上报System.Collections.Generic.ICollection`1.CopyTo错误错误位置:string[] receipts = PlayerPrefsEx.GetStringArray("unfinished_iap_receipt");List unFinIAPReceipts = new List(rece原创 2015-11-10 13:49:39 · 1933 阅读 · 0 评论 -
【Unity3D游戏开发】基于NGUI的表情图文混排解决方案 (二二)
使用unity3d也有两年时间了,最近比较闲,有功夫梳理一下去年一年来学到以及用到的知识,分享给大家,顺便方便自己查阅。如有错误以及不当的地方,欢迎各位指正。谢谢。 去年五月份的时候,刚加入项目不久,老大交给我一个关于聊天系统任务,期初觉得应该很容易,但是看了文档之后,瞬间头都大了_(:з」∠)_,因为需要支持表情!当时Unity3D版本4.3.x,NGUI版本3.5x,当时版本的N转载 2015-11-03 09:43:29 · 8554 阅读 · 4 评论 -
【Unity3D游戏开发】NGUI制作字体的三种方法 (二一)
NGUI制作字体的三种方法主要参考两篇博文: (1)、NGUI制作字体的三种方法 (2)、使用位图字体工具BMFont从图片生成自定义字体1.BMFont下载地址http://www.angelcode.com/products/bmfont/2.BMFont使用方法http://momowing.diandian.com/post/2013转载 2015-11-03 09:41:45 · 4949 阅读 · 0 评论 -
【Unity3D游戏开发】spine-unity3D 学习笔记 (二十)
spine-unity3D 学习笔记http://zh.esotericsoftware.com/spine-using-runtimes //skeletonDataSkeletonAnimation skeletonAnimation = GetComponent();Debug.Log(skeletonAnimation.name);//获取角色名转载 2015-10-24 09:51:14 · 3687 阅读 · 0 评论 -
【Unity3D游戏开发】性能优化之缩减压缩包大小 (二八)
unity3d打包的所有文件是会被记录而且被排序的。所以这大大方便了我们分析为何打包文件如此之大,以及怎么减少打包文件。 日志目录一般在:C:\Users\Administrator\AppData\Local\Unity\Editor 打开log文件,可以看到打包文件的统计信息:Textures 176.1 mb 70.1% Meshes 7.转载 2015-12-21 00:28:40 · 5088 阅读 · 0 评论 -
【Unity3D游戏开发】性能优化之spine提高80~90%的效率 (三一)
Spine效率低Unity加载spine动画,经常会出现卡顿的情况,尤其是SkeletonRenderer.Awake时,会瞬间出现大量的GC Alloc,造成瞬间的卡顿,像我们游戏一个角色动画的时间在100~200ms 原因分析原来导出的spine数据是.json格式,加载、分析数据慢 现在采用二进制的binary导出为.skel格式,记载速度能提高80~90%测试数据.json加载速度100原创 2015-12-30 02:37:34 · 20819 阅读 · 9 评论 -
【Unity3D游戏开发】定制截图截图(三五)
Unity的截屏处理办法,一种是通过Texture2d处理,一种是通过RenderTexture来处理。其中RenderTexture最灵活,可以定制渲染的摄像机。下面是我总结的、在u3d中的,三种截屏方法:1、使用Application类下的CaptureScreenshot方法。[csharp] view plain copy转载 2016-03-27 16:56:49 · 1085 阅读 · 0 评论 -
【Unity3D游戏开发】定制新建C#文件的头描述 (三三)
unity添加新脚本的时候,可以定制【开发者姓名】【开发日期】【文件描述】【版权声明】等,省的到时候不知道谁写的,也没有个描述,关键是TNND连个背锅的人都没有其实unity已经给我们提供了新建脚本的模板,非常的简单,只需要简单的修改下模板即可步骤如下:1. 修改模板内容如下:Unity.app/Contents/Resources/ScriptTemplates/原创 2016-03-22 18:21:47 · 1630 阅读 · 0 评论 -
【Unity】Log文件
Unity的所有log文件记录位置 Editor Logs:Windows XP:C:\Documents and Settings\YOUR_USERNAME\Local Settings\Application Data\Unity\Editor.Windows Vista, 7:C:\Users\YOUR_USERNAME\AppData\Local\Unity\EditorOS X原创 2016-02-23 18:37:39 · 5548 阅读 · 0 评论 -
【Unity3D游戏开发】Application.systemLanguage无法区分简体中文和繁体中文 (二六)
游戏发布,需要繁体中文和简体中文iOS8以前OK,iOS9上通过Application.systemLanguage返回的简体中文和繁体中文都是SystemLanguage.Chinese,真实坑啊Unity 5.2.1、Unity 5.3都有这个问题原因分析:语言 iOS返回语言 Application.systemLanguageios 7简体原创 2015-12-12 19:26:17 · 10772 阅读 · 4 评论 -
【Unity3D游戏开发】性能优化之Texture图片空间和内存占用分析(三七)
Unity3D–Texture图片空间和内存占用分析发表于2014年5月21日由陆泽西Texture图片空间和内存占用分析。由于U3D并没有很好的诠释对于图片的处理方式,所以很多人一直对于图集的大小和内存的占用情况都不了解。在此对于U3D的图片问题做一个实际数据的分析。此前的项目都会存在这样或者那样的打包后包大小与内存占用情况的问题,所以这次所以彻彻底底得分析下U3D对于Textu转载 2016-04-01 00:41:20 · 2563 阅读 · 0 评论 -
【Unity3D游戏开发】性能优化之如何将包大小减少到极致(三六)
Unity3D之如何将包大小减少到极致,图片是游戏app里最最占空间的资源,所以请各位还没有理解u3d对图片文件存储方式理解的请看《unity3d-texture图片空间和内存占用分析》。因为u3d对资源的压缩并不阐述的十分详细,所以很多项目在遇到包大小瓶颈时非常头疼。我也不是神仙,也同样痛苦过,但经历几个项目的折腾,最终能梳理出一套能将u3d包大小减少到合理范围的方法。首先来展示下,官方转载 2016-04-01 00:31:50 · 2340 阅读 · 0 评论 -
【Unity3D游戏开发】基础知识之Tags和Layers (三二)
Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject。添加Tags和Layers的操作如下:"Edit" -> "Project Settings" -> "Tags and Layers"来打开设置面板。 tag可以转载 2016-03-17 06:58:51 · 6035 阅读 · 0 评论 -
KeyChain保存和获取应用的UDID
KeyChain保存和获取应用的UDIDTODO手机网络游戏,希望玩家不用输入账号就能自动登录到游戏中,这样就需要生成设备的唯一UDID作为账号,需求在删除游戏重新安装、升级游戏等情况下UDID账号不会更改。思路1.生成一个UDID 2.iOS手机上把UDID保存到keychain(钥匙链)中1.1在iOS系统中,获取设备唯一标识的方法有很多:一.UDID(Unique Device Identi原创 2015-12-07 01:27:08 · 3325 阅读 · 0 评论 -
【Unity3D游戏开发】App游戏名字本地化 (二七)
开发环境Unity5.3 XCode7.2目标游戏名字需要多语言处理过程1.添加多语言 2.用CFBundleDisplayName来处理名字多语言 失败尝试流程1.未成功 info.plist里, 添加Application has localized display name ,并设置成yes2.InfoPlist.Strings要选对工程 扩展如果你想为不同的设备(iphone,ipa原创 2015-12-19 17:25:33 · 5179 阅读 · 0 评论 -
【Unity3D游戏开发】iOS9 ReplayKit录制视频 (三十)
Unity游戏需要视频分享,苹果自带ReplayKit比较简单,架不住Objective-C和swift啊#游戏目标: 为游戏增加视频分享#开发环境: Unity5.3.0f4#技术点: ReplayKit,需要ios9.0以上直接上代码吧ReplayKitProxy.h#import #import @interface Replay原创 2015-12-24 20:02:42 · 6581 阅读 · 6 评论 -
【Unity3D游戏开发】UnityEditor.UI.dll timestamps but is not known in guidmapper...(十九)
unity工程打开报错"...UnityEditor.UI.dll' is in timestamps but is not known in guidmapper..."删掉工程目录下的"Temp"和"Library"目录即可原创 2015-10-12 10:07:40 · 3952 阅读 · 2 评论 -
【Unity3D游戏开发】之利用语法糖添加自定义拓展方法(下) (十八)
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。这让java开发人员羡慕不已,呵呵。 1. 经过简化的Property早些时候我们这样声明Property1234567891转载 2015-09-10 14:13:58 · 859 阅读 · 0 评论 -
【Unity3D游戏开发】之利用语法糖添加自定义拓展方法(上) (十七)
通常你会发现你不能修改正在使用的那些类,无论它是基础的数据类型还是已有框架的一部分,它提供的方法让你困苦不堪。不过。。C# 提供了一种巧妙的方式来让你扩充已有的类,也就是我们今天要讲的扩展方法。扩展方法由于很方便而被经常使用到,我们更愿意叫他语法糖豆(syntactic sugar),一个实用样例是Unity的Transform类,比如:你只想设置Transform.position中Ve原创 2015-09-10 14:09:37 · 1095 阅读 · 0 评论 -
【Unity3D游戏开发】NGUI之多分辨率下完美分布式协同开发 (五)
NGUI多分辨率下完美分布式协同开发:不同分辨率下相对于屏幕坐标的Perfab数据不再丢失NGUI多分辨率下完美分布式协同开发不同分辨率下相对于屏幕坐标的Perfab数据不再丢失开发问题原因分析案例完美过程案例分析实现过程开发问题:NGUI分布式开发中,用git管理资源,团队成员每人负责一个perfab,所有现对于屏幕大小的相对位置的perfab因为引用了perfab外的数据,导致per原创 2015-08-02 18:54:12 · 1563 阅读 · 0 评论 -
【Unity3D游戏开发】NGUI之DrawCall数量 (四)
看了很多关于NGUI drawCall的文章,见得比较多的一个观点是:一个 Atlas 对应一个Drawcall。但其实NGUI内部有自己的一套对DrawCall的处理规则。相关的规则有:1.Atlas图集数量有关2.Atlas图集的调用顺序(绘制顺序)有关3.和UIPanel的数量有关一、减少NGUI 3的DrawCall数量升级到NG原创 2015-07-28 08:17:09 · 2655 阅读 · 0 评论 -
【Unity3D游戏开发】NGUI之不相对于Anchor的位移动画TweenPosition (下) (三)
Unity中的UI我们采用的是NGUI,NGUI的界面位移动画,我们一般使用的是TweenPosition。一种是只考虑相对位移的这种,不考虑分辨率问题,已经在文中介绍了:【Unity NGUI游戏开发之二】TweenPosition位移动画(一):不相对于Anchor的位移动画另外一种是考虑到分辨率的问题,我们游戏中大多遇到的是这种情况。eg.我们想让一个UI从屏幕外沿着原创 2015-07-27 10:37:03 · 4079 阅读 · 0 评论 -
【Unity3D游戏开发】NGUI之不相对于Anchor的位移动画TweenPosition (上) (二)
下面学些下NGUI的TweenPosition位移动画,下面介绍两种游戏中常用的用法:用法1.NGUI的控件从PosA位置移动到PosB位置,播放动画用法2.在游戏中需要动态创建带有TweenPosition组件动画的对象,对象创建、移动、到达指定位置、销毁的过程。eg.游戏中玩家吃金币,迟到金币后转换为分数,分数播放一个TweenPosition组件动画,从玩家位置移动到分数标签位置,到原创 2015-07-26 17:27:41 · 11290 阅读 · 1 评论 -
【Unity3D游戏开发】NGUI之渐变加载到100%的Loading场景进度条 (一)
背景 通常游戏的主场景包含的资源较多,这会导致加载场景的时间较长。为了避免这个问题,可以首先加载Loading场景,然后再通过Loading场景来加载主场景。因为Loading场景包含的资源较少,所以加载速度快。在加载主场景的时候一般会在Loading界面中显示一个进度条来告知玩家当前加载的进度。在Unity中可以通过调用Application.LoadLevelAsync函转载 2015-07-07 09:58:06 · 4421 阅读 · 0 评论 -
【Unity基础知识之二】支持iOS架构 armv6 armv7 armv7s arm64
目前ios的指令集有以下几种:armv6iPhoneiPhone2iPhone3G第一代和第二代iPod Toucharmv7iPhone4iPhone4Sarmv7siPhone5iPhone5Carm64iPhone5S 机器对指令集的支持是向下兼容的,因此armv7的指令集是可转载 2015-06-25 10:29:34 · 7598 阅读 · 0 评论 -
【Unity基础知识之一】 Unity支持 IOS 64-BIT
Today we announce the public release of Unity 4.6.2, available for download as of right now. It is the first public release with iOS 64-bit support, using our new IL2CPP technology.IL2CPP is an转载 2015-06-25 10:37:49 · 4822 阅读 · 0 评论 -
【Unity基础知识之三】Unity Assets目录下的特殊文件夹名称
Unity3D的特殊目录名称Unity预留了一些目录名称,这些目录有着特殊的含义。比较重要的有:Resources这个目录下的所有文件都会被打包到发布版本中,程序可以通过文件路径来访问它们。这个太有用了,像RPG游戏里面很多策划编辑的数据都可以保存到这里。可以使用UnityEngine.Resources.Load()方法加载,相关的类还有TextAsset。详转载 2015-08-03 18:26:39 · 6396 阅读 · 0 评论 -
【Unity基础知识之四】Unity、Mono为何能跨平台?聊聊CIL(MSIL)
c#语言规范阅读目录前言:Why?What?How?附录:回到目录前言:其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇。到底是什么原理使得U3D可以跨平台呢?后来发现了Mono的作用,并进一步了解到了CIL的存在。所以,作为一个对Unity3D跨平台能力感兴趣的U3D程序猿,小匹夫如何能不关注CIL这个话题呢?那么下面各位看官就拾起语文老师教导我们的作转载 2015-08-13 08:04:41 · 2227 阅读 · 0 评论 -
【Unity基础知识之五】Unity3d-在Unity项目中使用Mono DLL(动态链接库)
最近研究了下Unity对Dll的调用。查了一些资料,总结如下。为什么要用DLL?答: 1:你选择用来开发的编程语言并不被Unity支持(如 F#),这个时候你就可以考虑把这样的代码编译成DLL文件。 2:你并不想让代码公开,只是想提供调用接口,那么DLL是一个很好的选择。怎么做?答:回答这个问题,首先要解决“怎么创建Unity3d 支持的DL转载 2015-08-13 09:30:20 · 2620 阅读 · 0 评论 -
【Unity3D游戏开发】NGUI之游戏背景Texture采用UV纹理动画 (六)
开发背景游戏中一些背景能采用UV动画,效果更佳。eg.星空、墙壁因为gif的原因有卡顿,起始播放纹理动画的时候是不会有卡顿的。 Unity的NGUI采用纹理动画NGUI的UITexture允许使用一张纹理 有了这个,我们便可以扩展一个脚本来影响【UV Rect】参数了/** 基于NGUI的UITexture的纹理动画 1.图片首尾相接的UITexture,可以播放UV纹理动画原创 2015-08-03 15:54:22 · 4226 阅读 · 0 评论 -
【Unity3D游戏开发】Time.timeScale=0暂停游戏的情况下播放动画 (七)
前提条件:在项目中用过Time.timeScale = 0来实现游戏暂停问题: 暂停游戏后,暂停界面的按钮可能需要播放一个idle时的动画,Time.timeScale=0 会影响动画播放。受Time.timeScale影响的因素:1.物理模拟. FixedUpdate - 当Time.timeScale=0时,FixedUpdate 函数不会被执行。2.Corouti原创 2015-07-27 14:34:32 · 9938 阅读 · 1 评论 -
【Unity3D游戏开发】之全局管理类的几种方式 (十六)
如何在Unity中实现全局管理类?由于Unity脚本的运行机制和面向组件编程(COP)的思想,实现起来和普通的方式略有差别。第一种方式是使用静态类。适合存储一些全局的变量,如游戏当前关卡、玩家得分等。实现方式和普通的C#静态类没有差别。注意使用静态类就没有必要继承MonoBehaviour了。如果要实现复杂一些的全局控制,如切换游戏关卡等操作,更常用的方式是使用单例类。单例转载 2015-09-09 14:09:46 · 4786 阅读 · 0 评论 -
【Unity3D游戏开发】之多语言缩写对应表 (十五)
游戏开发时,iOS会返回当前语言为 "en"、"zh"、“zh-Hans"、"zh-Hant"等等Unity对应的语言列表; private static function CheckAndSetUserLanguage() : boolean { switch(Application.systemLanguage) { case SystemLa原创 2015-09-08 17:09:35 · 8725 阅读 · 1 评论