
Unity3D
文章平均质量分 80
cbbbc
这个作者很懒,什么都没留下…
展开
-
Unity3D的Mono是什么
初次接触unity3D,对程序,特别是C++程序来说,最不习惯的就是突然发现面向了所谓的脚本,C#本身不是问题(可能一天时间一本书浏览就够了),但是脚本最要命的是突然不知道整个程序的执行流程了。 对于Unity3D来说,用到了mono框架,也就是每个脚本需要继承MonoBehavior的那个Mono。可能的真正流程是,Class Program{ foreach转载 2015-09-09 00:10:35 · 2270 阅读 · 0 评论 -
Unity 模型的制作规范
数字模型制作规范 本文提到的所有数字模型制作,全部是用3D MAX建立模型,即使是不同的驱动引擎,对模型的要求基本是相同的。当一个VR模型制作完成时,它所包含的基本内容包括场景尺寸、单位,模型归类塌陷、命名、节点编辑,纹理、坐标、纹理尺寸、纹理格式、材质球等必须是符合制作规范的。一个归类清晰、面数节省、制作规范的模型文件对于程序控制管理是十分必要的。首先对制作流程作简单介绍: 素材采集-模型制转载 2015-09-09 00:23:07 · 3830 阅读 · 0 评论 -
unity使用json的个人心得
json, 实际上就是一种规范的存储数据的结构,它具有结构简明、实现方便、多变万用、跨平台等特点,深受人们喜爱。Unity的工程,在自身数据结构设计方面、数 据的内存与外存转换方面、以及与服务器沟通方面,都迫切需要像json这样的通用且易用的结构。下面我来谈一下在unity中使用json的一些心得,欢 迎大家前来交流。Unity支持C#,那么首先要需要一个基于C#的json库,网上可以找到封装转载 2015-09-10 00:37:17 · 3212 阅读 · 0 评论 -
uLua bug fix
1. DoFile 文件加载方式修改 既然要热更新,肯定不能只加载Resources目录下的lua文件,所有uLua里面牵扯到Resources.Load(filename) as TextAsset 的地方都要替换成自己的文件加载函数。做到运行时从persistentDataPath目录中的打包文件内读取lua文件2. Lua 错误堆栈信息修改 经常发现lua出错时打印转载 2015-09-10 00:55:00 · 401 阅读 · 0 评论 -
Unity3d中使用log4net
最近在用unity3d开发Android上的游戏,一直Debug.Log感觉很悲剧,后来研究了下把log4net加了进去,能通过udp发送远程日志,电脑手机上都能发送日志,顿时神清气爽。可是后来才发现,把eclipse打开,连接到android设备后,Debug.Log 能直接在LogCat中显示出来,囧! 但是还是分享下我加入Log4net的过程吧,如果确实有需要的话可以借鉴下,少走转载 2015-09-08 23:56:05 · 2014 阅读 · 0 评论 -
深入剖析U3D的Miss Mono Behaviour问题
我相信u3d稍微大一点的项目,大家都是用unitypackage来传递资源和工作共享的吧?问题是这样的,美术给我们的unitypackage在程序这边导入之后,总是会出现Miss Mono Behaviour的问题,也就是脚本丢失了,不知道大家有没遇到过。出现很多次了,终于在两天前怒了,想要彻底解决这个破事。本文就是解决这个问题时的一些经验,最后发现,在良好的工作规范之下,这个问题几乎不应转载 2015-09-09 21:14:01 · 528 阅读 · 0 评论 -
DontDestroyOnLoad带来的麻烦
GameObject.DontDestroyOnLoad(GameObjectxxx),它的作用就是让某物体创建之后不再随场景而销毁。这个功能是很有用的,比如联网模块、音效模块,作为网游肯定是时刻存在的,那么它们所绑定的物体自然就不允许销毁。往往这类模块使用的都是单例模式,也就是说,游戏中必须有且仅有这么一个东西。少了游戏发生错误,多了则会造成内存垃圾。现在假设这种情况:有A、B两个场景,A场转载 2015-09-10 00:41:52 · 12584 阅读 · 2 评论 -
unity3d插件
Build Report Tool 找出项目中的无用资源Texture Overview Pro 项目中贴图的内存详细使情况xAM:Aspect and Resolution Master 各种手机机型真实分辨率模拟Realistic Effects Pack 特效编辑,特效效果很好,效率又很高See Through System 处理角色被建筑或树遮挡后 角色透出转载 2015-09-09 00:23:51 · 738 阅读 · 0 评论 -
uLua,一个Unity+Lua热更新解决方案!
原文:http://game.ceeger.com/forum/read.php?tid=16483&fid=16看了坛子上同学用Kopilua,以为真的跨平台没问题,就实验了安卓手机,然后就开始铺游戏框架,干了一星期到昨晚想起来到ipad上跑跑,然后我跟我的小Demo一起崩溃了。今天搜索luajit,终于在u3d官方论坛终于发现了真正支持IOS+安卓(老外说web也支持,没测试)转载 2015-09-09 23:48:12 · 3414 阅读 · 0 评论 -
Unity3D普通类和继承自MonoBehaviour类的区别
Unity3D普通类和继承自MonoBehaviour类的区别 Unity3D普通类和继承自MonoBehaviour类的区别。如果创建新的类时,使用的是在unity editor的project视图中右键,create javascript or c#方式,那么创建的类都是默认继承自MonoBehaviour, 生成后可以查看类文件,会发现c#类继承自MonoBehaviour, 虽然jav转载 2015-09-09 00:12:19 · 2671 阅读 · 0 评论 -
Unity3D占用内存太大的解决方法
最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大.这里写下关于Unity3D对于内存的管理与优化.Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时转载 2015-09-09 00:16:06 · 585 阅读 · 0 评论 -
Unity中的网络编程
首先要说明的是,Unity本身的网络功能并不适合做MMO类型的游戏。如果要使用Unity作为MMO游戏的客户端,一般来说都是在C#中通过socket建立自定义的网络通信来实现。Unity本身的网络功能是为多人游戏设计的,这种游戏模式一般来说就是一个玩家建立游戏(这个玩家既是server,又是client),其他玩家连接进来。从带宽考虑一般同时支持的玩家数量小于64个(这个也不一定,要看游戏本身的设转载 2015-09-09 00:20:03 · 861 阅读 · 0 评论 -
Unity中使用ulua的个人经验总结
Lua代码都是运行时才编译的,不运行的时候就如同一张图片、一段音频一样,都是文件;所以更新逻辑只需要更新脚本,不需要再编译,因而Lua能轻松实现“热更新”。Ulua是一款非常实用的unity插件,它能让unity支持Lua语言,而且运行效率还不错。下面就跟大家谈谈我用ulua的一些心得。 Ulua的使用流程一般为:实例化LuaState对象(new LuaState())è加载Lua代转载 2015-09-10 00:25:04 · 1028 阅读 · 0 评论 -
Unity 3D--外部加载资源AssetBundles
Unity 3D里有两种动态加载机制: 一是Resources.Load; 一是通过AssetBundle; 其实两者本质上没有什么区别。Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的。其实场景里所有静态的对象也有这么一个加载过程,只是转载 2015-09-08 23:39:28 · 719 阅读 · 0 评论 -
Unity3d资源管理分析
分离资源管理参考1.Unity3D占用内存太大的解决方法 - 星尘讨论AssetBundle-Resources-GameObject 的生命周期问题。对AssetBundle.Unload,Instantiate,Destory,UnloadUnusedAsset有详细的辨析。http://www.cnblogs.com/88999660/archive/2013转载 2015-09-08 23:51:19 · 1000 阅读 · 0 评论 -
Unity bundle的制作和使用
Unity有个很好的功能,大致是很多专注于PC的engine没有提供的(因为没有必要),就是能加载主包外的资源,这个主包外的资源,unity把它叫做bundle。这个功能的提供,主要是在web上或者是ios、android等设备上,主包太大的话,会遇上下载主包时间太长,体验不佳;或者是有些市场直接就限制了主包的大小。制作的bundle的方式,这里只讲bundle中连scene都带入的:1、转载 2015-09-09 00:05:20 · 756 阅读 · 0 评论 -
unity3d AssetBundle包加密
保护资源管理文件的相关内容 Unity允许用户使用AssetBundle.CreateFromMemory从一个 byte[]数组中建立一个AssetBundle的对象。在运行传输解密时,可以用这种加密方法来提高安全性和保护用户建立的资源管理中的内容。string url = "http://www.mywebsite.com/mygame/assetbundles/assetbundle1.转载 2015-09-09 00:07:50 · 1103 阅读 · 0 评论 -
Unity代码混淆方案
Unity代码混淆方案内容提要:Unity引擎下的代码保护,由于Unity引擎的一些特殊性,实行起来较为复杂,在国内外业界并没有现成的方案。笔者通过在《QQ乐团》项目上的实际尝试,得出了一种具体可行,能够有效保护代码逻辑的方案。特此分享给关注Unity引擎的项目,希望能提供一些的参考。背景Unity引擎上的程序执行在Mono运行时上,使用Mono编译出的程序集格式与.NET标准一致。C#是转载 2015-09-09 21:16:21 · 842 阅读 · 0 评论 -
MOBA游戏草丛系统的个人思路
英雄联盟,作为一款火爆的MOBA类游戏,其一大特色就在于玩家可以——“躲草”。用一句话来概括躲草,那就是:当玩家控制的英雄躲入地图中的草丛,则对敌形成 隐身效果,达到埋伏、偷袭的效果。笔者有幸参与了一款基于Unity引擎的MOBA游戏的研发,并负责躲草系统的设计与实现。下面简单介绍一下个人设计思路,欢迎大家前来交流!首先,作为一款长连接网络游戏,几乎任何功能都是由服务端和客户端两部分来完成转载 2015-09-10 00:46:44 · 3621 阅读 · 0 评论 -
使用编译原理,把逻辑编排交给策划
作为一个U3D程序员,写一行if语句很容易。然而,这一行if语句里包含的逻辑,对其进行修改,是需要重新编译的,是写死在代码里的。那么问题来了,策划说:“来,按我的思路把这里改一下”。好了,原来写好的if(A or B),可能就要被改成if(A and B),甚至是if(A and(B or C)),重复编译与修改……这时你一定想说:“好呀,想改的话,自己改啊”。那么如何把这一逻辑问题,合理地交转载 2015-09-10 00:45:30 · 977 阅读 · 0 评论 -
关于uLua在Unity3D的性能测试
一:实例化并带清空对象的对比 - lua中实例化5w个空对象并且直接删除 function main.test( ) print('lua start at:'..Time.realtimeSinceStartup) for i=1,50000 do local go = GameObject('init') GameObject转载 2015-09-10 11:23:49 · 726 阅读 · 0 评论 -
unity3d热更新插件uLua学习整理
前言IOS不能热更新,不是因为不能用反射,是因为System.Reflection.Assembly.Load 无法使用System.Reflection.Emit 无法使用System.CodeDom.Compiler 无法使用这三个不能用,就把传统dotnet动态路径坑死了为啥“这三个不能用,就把传统dotnet动态路径坑死了”呢动态载入dll或者cs的方法就这几个转载 2015-09-10 12:13:52 · 1771 阅读 · 0 评论 -
Unity热更新之ULua 踩坑篇
Unity 的原生c#是无法在移动端上进行热更新的,那么如果线上发布遇到重大闪退事故的话,那么就不可以通过游戏内的热更新进行bug修复,只能重新提交版本,而往往在提交版本到发布的时间内,必然有玩家遇到这种问题,导致流失的,对于团队来说,这个可是很严重的。所以我google了下,目前已经有开发者实现了这一功能,有c#Light ,ULua,Nlua等,lua在cocos上可以说是非常成功的,与C转载 2015-09-10 10:28:18 · 880 阅读 · 0 评论 -
Unity-Shader Sublime 自制shader提示插件
Unity-Shader编写shader,最好还是有一个好的IDE或者编辑器,支持语法高亮和智能提示的.最初使用mac ,找了找插件,没找到,只能依靠mono的高亮进行编写,对于习惯了IDE的我来说,太累了.后来换用windows,找了下vs上的shader插件,找到了一个叫Nshader的shader插件,下载下来之后发现很不幸,它目前不支持vs2013 = = !所以自制改进了转载 2015-09-10 12:56:12 · 1361 阅读 · 0 评论 -
Unity延迟执行一段代码的较为优雅的方式
===============================================using UnityEngine;using System.Collections;using System;public class DelayToInvoke :MonoBehaviour{public static IEnumeratorDelayToInvokeDo(Action a转载 2015-09-10 13:01:48 · 2561 阅读 · 0 评论 -
Unity3D显示中文的各种方案的比较
PS:U3D马上就要升级4.0了,说是在9月份,会有新的GUI系统,不知道那时会怎么样,我现在考虑的方案只是针对3.5.x系列的。UILaber的优势:1、在NGUI的统一处理之下,对layer控制很直接,自然支持遮挡2、支持获取像素级的宽度、设位置3、可以使用8bits的字体贴图,尺寸占得小UILaber的问题:1、NGUI的UILaber不支持TTF字库,只支持字库贴图转载 2015-09-10 14:32:17 · 1477 阅读 · 0 评论 -
U3D里UI相关逻辑和文件的组织关系的各种形式的比较
代码和资源的组织关系我觉得,做UI逻辑的时候,在IDE里将脚本挂载到对象是个错误的方式。因为不利于UI制作人员和程序员的工作分离。不断的import和export package,会让程序员的代码遭遇版本问题如果程序使用了particle class 特性,也会让UI制作人员那边运行不起来解决方案:本质是使用AddComponent,在运行期组织对象和脚本的关联关系转载 2015-09-10 14:33:49 · 500 阅读 · 0 评论 -
深入剖析U3D的Miss Mono Behaviour问题
我相信u3d稍微大一点的项目,大家都是用unitypackage来传递资源和工作共享的吧?问题是这样的,美术给我们的unitypackage在程序这边导入之后,总是会出现Miss Mono Behaviour的问题,也就是脚本丢失了,不知道大家有没遇到过。出现很多次了,终于在两天前怒了,想要彻底解决这个破事。本文就是解决这个问题时的一些经验,最后发现,在良好的工作规范之下,这个问题几乎不应转载 2015-09-10 14:35:45 · 616 阅读 · 0 评论 -
unity3D中使用协程来做“多次调用一次更新”特性的一个大坑
有些事情一帧之内只需要做一次,比如收发邮件时,一帧内数据层多次的变化,表现层只需要一次更新。我采用协程做这个事情,为了避免发起多个协程,我记录了一个协程是否发起的变量。但是u3d里的coroutine,在发起的脚本acvited=false后,就不更新了,并且我测试过,再恢复成actived = true,协程依旧不更新了,就像没调用一样。以下是u3d关于协程的调用机制的解释:“在转载 2015-09-10 14:36:44 · 5399 阅读 · 0 评论 -
在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
u3d里动态创建对象,需要使用prefab而创建的时候 MonoBehaviour.Instantiate( GameObject orignal) 需要一个作为原型的对象。本文提供三种方式获得prefab对象。方式一:使用脚本的public字段直接在Project视图里找到做好的prefab,将其拖拽到指定脚本的指定public GameObject 字段。方式二:Resou转载 2015-09-10 14:39:32 · 791 阅读 · 0 评论 -
Caching查看窗口
闲来无事,做了一个简约的Caching查看窗口,可以方便的查看本地缓存的使用情况:下面的URL和VersionNum用来查看某个特定资源的特定版本是否存在,分别输入所需信息,点击“检测”,即可在下面显示出结果。代码如下所示:using UnityEditor;using UnityEngine;using System.Collections; public c转载 2015-09-10 20:11:27 · 807 阅读 · 2 评论 -
效率相关笔记
简要清单,让你的游戏速度更快:(1)保持顶点数如下:针对iPhone 3GS和更加新的设备(带SGX GPU),每帧40K;针对旧设备(带MBX GPU)每帧10K。(2)物体之间尽可能共享相同的材质,这样有利于进行渲染合批,对于不同贴图同一材质的,可以将多张贴图合成一张,只合并两个物体而没有共享材质,这样不会给你带来任何性能提高。 每场景中不同的材质的数量尽可能少。 相同相机转载 2015-09-10 20:33:19 · 444 阅读 · 0 评论 -
D3D的绘制
一、D3D中的绘制顶点缓存和索引缓存:IDirect3DVertexBuffer9 IDirect3DIndexBuffer 使用这两缓存而不是用数组来存储数据的原因是,缓存可以被放置在显存中,进行绘制时,使用显存中的数据将获得比使用系统内存中的数据快得多的绘制速度。 静态缓存(static buffer):一般放置在显存中,不需要进行修改,比如地形和城转载 2015-09-10 20:38:32 · 1217 阅读 · 0 评论 -
unity平台的预处理
在开发中,特别是unity的跨平台中,我们常常会在各个平台游走,如安卓版,苹果版,PC版......。在此不同的平台上,有可能我们须要做不同的操作。然而我们就能够用unity的自带的平台宏定义方式来做平台的推断。Unity帮我们定义了例如以下平台预处理: 名称 描写叙述UNITY_EDITORDefine for call转载 2015-10-19 21:32:32 · 516 阅读 · 0 评论 -
Unity3D工程版本管理方案
Unity进行多人协作开发时必定会涉及资源、代码、配置的版本管理。这里介绍一下用SVN、GIT或其它版本管理系统进行Unity工程版本管理的方法。新建一个Unity工程,目录结构基本是这样的:Assets、Library、ProjectSettings目录运行时还会多出Temp目录如果用Monodevelop或VS打开过还会生成一堆工程文件最终大约是这样:Unity工程转载 2015-11-05 14:42:24 · 843 阅读 · 0 评论 -
浅析游戏引擎的资源管理机制 扒一扒Unity3D中隐藏在背后的资源管理
游戏中通常有大量资源,如网格、材质、纹理、动画、着色器程序和音乐等,游戏引擎作为做游戏的工具,自然要提供良好的资源管理,让游戏开发者用最简单的方式使用资源。游戏引擎的资源管理包括两大部分:离线资源管理和运行时资源管理。本文仅对前者进行简要介绍,并结合Unity3D和OGRE进行分析。资源创作与导出 游戏中的资源由各种数字内容创作工具(DCC, digital content creati转载 2015-11-05 14:53:58 · 1287 阅读 · 0 评论 -
Unity.exe/Unity命令行参数
Typically, Unity will be launched by double-clicking its icon from the desktop but it is also possible to run it from the command line (ie, the MacOS Terminal or the Windows Command Prompt). When laun转载 2015-10-20 15:52:57 · 4122 阅读 · 0 评论 -
Unity 日志文件的存放
Editor 编辑器Editor log can be brought up through the Open Editor Log button in Unity's Console window.编辑器日志,可以通过Unity的控制台窗口中Open Editor Log 按钮打开。Mac OS X~/Library/Logs/Unity/Editor.log转载 2015-10-20 12:57:00 · 24997 阅读 · 1 评论 -
获取unity当前版本号
Debug.Log("Version of the runtime: " + Application.unityVersion);注:这行代码必须写在主线程里,也就是继承自MonoBehaviour的脚本里原文地址:http://blog.youkuaiyun.com/smilelance/article/details/7889253转载 2015-10-22 15:42:13 · 3888 阅读 · 2 评论 -
Unity3D研究院之Assetbundle的原理(六十一)
Assetbundle 是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法使用起来很便利。1.预设 Assetbundle可以将Prefab封装起来,这是多么方便啊! 而且我也强烈建议大家将Prefab封装成Assetbundle,因为Prefab可以将游戏对象身上带的游戏游戏组件、游戏脚本、材质转载 2015-10-27 20:23:47 · 299 阅读 · 0 评论