UNITY - 技术教程文章

Unity5内部渲染的优化2:清理【图】

译自aras的博客,总共3篇文章,讲述unity5优化自己渲染器的过程 吸取大神调试与优化经验,了解unity5内部渲染器的优化方法前篇:Unity5内部渲染的优化1:介绍 介绍过去后,让我们来进行实际工作 在以前的文章已经提到的,首先我尝试想起/找出现有代码,做一些分析并且写下突出的地方。 分析多个项目主要揭示了两件事: 1. 渲染代码使用多线程真的比使用我们现有的“一个主线程和一个渲染线程” 更广阔。这里有一个从unity5的t...

Unity优化----drawcall系列【图】

本文由博主(国宝大熊猫)原创,转载请注明出处:http://www.cnblogs.com/xsln/p/5151951.html知识普及: *Drawcall影响的是CPU的效率。因为draw call是CPU调用图形接口在屏幕上绘制对应的东西。 主体: 为了在屏幕上draw一个物件(因为render和draw有些区别,所以为了区分清楚,这些概念用英文),引擎需要提供一个draw call的API。draw call调用性能开销是很大的,会导致CPU部分的性能负载。这通常是因为draw call间的状...

Unity内嵌浏览器脚本【图】

资源名称:Embedded Browser资源大小: 117.4MB资源版本: v1.0.2资源类型: .unitypackage安装要求:要求Unity 5.3.0或更高版本官网地址:https://www.assetstore.unity3d.com/cn/#!/content/55459网盘下载地址:链接: https://pan.baidu.com/s/1qXXMpoK 密码: fv95资源说明:本资源能够帮你渲染一个完全可交互的网页。通过本资源,你可以轻松加快你的库存管理、简化注册页面或是快速生成一个UI。 资源图片:原文:http://www.cnblo...

【原】Unity 骨骼节点对象优化,AnimatorUtility.OptimizeTransformHierarchy【代码】【图】

关键接口:AnimatorUtility.OptimizeTransformHierarchy需求:角色模型换装,角色模型由多个部位组合而成,暴露的骨骼节点非常多,可以通过AnimatorUtility.OptimizeTransformHierarchy接口进行优化。但是 Unity 提供的接口AnimatorUtility.OptimizeTransformHierarchy里面有一些坑,我在这里进行讲解。接口定义:public static void OptimizeTransformHierarchy(GameObject go, string[] exposedTransforms);对于该接口Unity的注释...

Unity NGUI TWEEN【代码】【图】

大家都知道NGUI中自带了缓动(Tween),我一开始使用的时候,只能让他缓动1次。这里面有一个UIPlayTween可以帮你多次的运行Tween。当然,你可以借助DOTween , ITween等专业的第三方缓动插件。本篇文章只讲解: NGUI的Tween首先对栗子进行一些简单的讲解:主要是对“目标GO”进行位移操作650) this.width=650;" src="/upload/getfiles/default/2022/11/10/20221110125416177.jpg" title="01.png" />对于“目标GO”需要挂载:TweenP...

Introduction to dependency injection with unityContainer【代码】

/* By Dylan SUN */This article is just a simple introduction to unityContainer. If you have already used unityContainer as a dependency injection or IoC (Inversion of control) library, this article is not for you. As you know, dependency injection is a design pattern to prevent the code coupling. For example, you access class CA’s method MA in several places in your application. If one day you n...

Unity3d 布娃娃系统

选中带骨骼的3d模型GameObject->Create Other->Ragdoll...点开发现弹出了一个Create Ragdoll的窗体前面的基础transform把骨骼拖进去就可以root 脖子right Hips(右屁股)用右大腿根即可right knee 右小腿right foot 右脚right arm右大臂根部right elbow 右小臂left就是right的左側middle spine 胯骨head 头部strength 强度total mass 总质量。与倒下速度有关注意以上骨骼不能反复都弄完后点击Create,在执行下,人物非常逼真的倒下...

C#设计模式之控制反转即依赖注入-微软提供的Unity【代码】【图】

使用VS2015的Nuget管理器下载Unity。 程序员接口类:1 namespace UnityDemo 2 { 3 public interface IProgrammer 4 { 5 void Working(); 6 } 7 }程序员类: 1 using System;2 3 namespace UnityDemo4 {5 public class CSharp : IProgrammer6 {7 public void Working()8 {9 Console.WriteLine("programming C# ..."); 10 } 11 } 12 13 public class VB :...

Unity3d《Shader篇》绘制圆角图片【代码】【图】

Pass{CGPROGRAM // Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it does not contain a surface program or both vertex and fragment programs.#pragma exclude_renderers gles#pragma fragment frag#include "UnityCG.cginc"sampler2D _MainTex;float4 _MainColor;float _RoundRadius;struct texCoord{float2 inputTexCoord : TEXCOORD0;};float4 frag(texCoord input) : COLOR{float x = input.inputTexCoord.x;...

LZMA C# SDK 子线程压缩与解压缩 Unity3d实例

参考雨松的LZMA SDK使用方法:http://www.xuanyusong.com/archives/3095转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn计划在项目中使用 不压缩的Assetbundle ,所以需要对Assetbundle 进行手动压缩打包,因为之前有对 十万个冷笑话的打包分析,所以这次坚定选择 LZMA压缩算法来压缩Assetbundle。转自http://blog.csdn.net/huutu http://www.thisisgame.com.cnNote:因为暂时不知道LZMA如何压缩与解压文件夹,所以目...

Unity3D热更新全书-脚本(三) C#LightEvil语法与调试【图】

调试,这是一个无法规避的问题C#Light 由于有 词法解释、语法解释、运行时三种情况所以和C#也是有类似的问题 出错大致可以分为编译错误和运行时错误拼写出莫名的东西或者语法不正确,会在编译阶段报错,这种错误很好检查,因为C#Light语法是C#的严格子集,所有的C#Light脚本都可以用C#的标准做语法检查这也是C#Light基本上是用VisualStudio做编辑器的原因所在,直接作为C#代码编译,可以排除大部分的语法问题。然后剩下的一些作为C...

Unity 资源管理与更新

当你在 工程目录下的 Asset 文件夹中放置一个文件时(电脑上的文件夹,不是 Unity 界面中的文件夹),Unity会自动检测到一个新的文件被添加(Unity会不停地检查Assets文件夹中的内容),然后 Unity会给这个资源赋予一个资源ID。你在 Unity编辑器中看到的资源是经过处理的,他和电脑上原始的资源文件是不同的。例如,纹理可以是Assets文件夹的一个PNG文件,但是可能在导入和处理之后被转换成一个内部格式。 资源使用内部格式,允许U...

让unity程序后台运行【图】

Unity的默认项目设定是"只在窗口被聚焦时进行游戏处理",失去焦点时处理停止。 写了个工具,需要处理很久的数据,估计30分钟以上。开着很久都没有反应,才发现没有支持后台运行,导致浪费了很多时间。 File > Build Settings... > Player > Resolution and Presentation > Run In Background* √ 设置选中。*这个设置只在webgl和stand 起作用,ios不起作用。原文:https://www.cnblogs.com/tangyongle/p/14261411.html

unity3d mvvm c#【代码】

using UnityEngine; using System.Collections;publicinterface IState {void BeforEnter();void BeforLeave(); }publicinterface ISceneState: IState {}publicclass GenFSM {IState _state;public GenFSM(IState state){this._state = state;this._state.BeforEnter();}publicvoid ChangeState(IState state){this._state.BeforLeave();this._state = state;this._state.BeforEnter();} }namespace Scene {publicclass Login: I...

Unity一个弹痕的简单实现方法【代码】【图】

之前知道一个方法比较复杂就是取出贴图,类似于从上到下从左到右的去遍历一张图,去除像素点改变像素点。今天在选丞大佬那看到下面这个方法,觉得十分简单,原理应该是相同的吧。官方文档:https://docs.unity3d.com/ScriptReference/RaycastHit-textureCoord.html附上中文版:http://www.manew.com/youxizz/2393.html新建一个脚本把上面链接中的代码复制进去,记得改下脚本名。将脚本挂在场景主相机上面:在场景中随便搞个物体 组...

Unity - UIWidgets 5. Redux接入(一) 基本接入【代码】【图】

对响应式的数据组织结构不太熟, 直接尝试Redux走起参考资料Redux的基本概念state 一个字段用于存储状态存储state的地方称为"store", 类似Model\DataCenter等, 把所有数据(state)存进去(类似playerprefs), 不对外提供setter方法 实际类似一个全局存储字典, 但难点在于如何组织数据, 比如玩家背包里面N种道具要想办法合理的存进去, 还要方便维护action 修改数据的指令要修改state只能通过action. 这样的话通过跟踪action的日志可以很...

unity, UGUI Text fadeIn

错误写法:     Color color = m_text.GetComponent<Text> ().color; Color startColor = new Color (color.r,color.g,color.b,0f); Color endColor = new Color (color.r,color.g,color.b,1f); m_text.GetComponent<Text> ().color = startColor; m_text.GetComponent<Text> ().CrossFadeColor (endColor, durTime, false, true);正确写法:     Color color = m_text.GetComponent<Text> (...

unity3d实现广告滑动效果【代码】【图】

新建了一个带mask的prefab,加上代码只需要将图片prefab、按钮prefab和所想添加的图片拖进去会自动生成按钮,滑动速度可以随意调time,滑动效果用itween实现的,所以需要加上itween插件效果如下:(图片是我最爱的马路小天使(ˉ﹃ˉ))附上代码 1using UnityEngine;2using System.Collections.Generic;3using UnityEngine.UI;4 5publicclass Mask : MonoBehaviour {6 7public List<Sprite> sprite = new List<Sprite>();8 Li...

Unity3D - 动作动画忽略timeScale【代码】

近期在调战斗时的动画与特效。Unity3D对加/减速提供了Time.timeScale支持。可是,timeScale提供的是全局的时间缩放,而我们有些动作或动画是不希望被timeScale加减速的。比方,《刀塔传奇》中播放大招时。除了大招特效,全部别的动作/动画都暂停。以下各自是Animation、Animator和粒子特效的ignoreTimeScale方法。AnimationTime.realtimeSinceStartup记录是不受timeScale影响的真实时间,利用它来在每一帧採样播放Animation。代码片...

C#开发Unity游戏教程之游戏对象的行为逻辑方法【图】

C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要内容是变量,但是在章节的最后为了展示游戏效果,也用到了它。现在看来方法真的是无处不在,并且不可或缺。它甚至都可以影响游戏对象的行为逻辑!因此本章终于到了不得不介绍它的时候了。 Unity游戏对象的行为逻辑游戏场景中,有些游戏...

【Unity3D】【NGUI】Atlas的动态创建

NGUI讨论群:333417608 NGUI版本:3.6.5 1、参见SZUIAtlasMakerRuntimeTest设置相应的值以上值需要提前设置好 2、没有检查是否atlas能够正确创建,自己可以改,加入返回值 3、代码都是在NGUI里面拷贝出来的,只是进行改动,没有新代码 4、适用与那种从网上下图片,之后还不想用UITexture的人,但是还是建议用UITexture如果drawcall不是问题的话 5、自己以后更新按我的方式改改就可以 6、动态创建速度较慢,建议在游戏启动的时候运行...

Unity 2D 渲染排序

翻译自Unity - Manual: 2D Sorting (unity3d.com)为什么翻译这篇文章?自己想搞明白Unity渲染物体的顺序,遂去搜索相关资料,发现较好的一篇博客也只是把其中几个因素(Render Queue,Sorting Order等)罗列出来,至于Unity具体怎么使用它们以及它们之间的优先级没有讲清楚,故而想把清楚解释这个问题的官方手册翻译下。2D 排序概览Unity根据优先级排序渲染,优先级是基于它们的类型和用法。你可以通过Render Queue指定渲染顺序。一...

Unity3d 编辑器中 Shader 属性导出【代码】

本例用于导出TerrainForMobile/3TexturesDiffuseSimple 的shader的贴图和缩放导出protected const string SHADER_FILTER = "TerrainForMobile/3TextureDiffuseSimple";public void parse(GameObject go) {//判空就不写了Renderer renderer = go.renderer;Material mat = renderer.sharedMaterial;Shader shader = mat.shader;int count = ShaderUtil.GetPropertyCount(shader);for ( int index = 0; index < count; ++index ){Shad...

Unity之定时调用

1.Invoke(string methodName,float time)在一定时间调用methodName函数using UnityEngine;using System.Collections; publicclassexample : MonoBehaviour { publicRigidbody projectile; voidLaunchProjectile() { Rigidbody instance = Instantiate(projectile); instance.velocity = Random.insideUnitSphere * 5; } publicvoidAwake() { Invoke("LaunchProjectile", 2); }} 2.InvokeRepea...

Unity3d Shader

Unity3d Shader 预览Surface Shader主要用来实现光照相关处理,可能更简洁。 Vertex and Fragment Shader 如果不与光照交互, 则可以用这个shader,更录活 fixed function shaders 固定shader主要用于老旧卡 ShaderLab 不管写哪种shader,最终通过shaderLab实现,其组织结构如下: Shader "MyShader" { Properties{ _MyTexture ("My Texture",2D) = "white" {} // other properties like colors or vectors go he...

unity 3D游戏开始界面GUI美化【图】

////////////////2015/07/07///////////////////////////by xbw/////////////////////////////////环境 unity 4.6.1//////先上效果图是不是很可爱,萌萌哒;;;话不多说,首先创建一个场景,,,图片中的天空场景加了天空盒,,,说一下怎么添加天空盒吧,我不喜欢给主摄像机添加天空盒,不过这种方法也说一下,点击主摄像机,在inspector属性栏中添加成分,skybox,然后找到天空盒的素材,将他赋给天空盒就好了,不过,这种方式不...

Unity5的关卡切换【代码】【图】

本文章由cartzhang编写,转载请注明出处。 所有权利保留。 文章链接:http://blog.csdn.net/cartzhang/article/details/51055584 作者:cartzhang一、Unity关卡Unity 使用过程中关卡加载和卸载是大多数三维引擎都要提供的基本功能。 因为关卡切换在游戏中非常常用。 在之前的版本中Unity的关卡切换使用的是:Application.loadedLevel() 看看Application类,此时这个类的功能比较繁杂,比较多。只看与关卡相关的:[Obsolete("Us...

Unity 协程与线程区别【代码】【图】

1、协程 不是线程,协同程序是 不同步 的 一个线程在程序中和其他线程是异步运行的,在多处理器机器中一个线程可以同时与所有其他线程的实时运行其代码,这使得线程编程能够解决很复杂的事情,因为可能在相同的时间里一个线程在改变它而另一个线程正在读取它,这意味着另一个线程实际上可以改变的东西在游戏中处理的中间似乎是你的源代码一行。这是因为你写的代码是由机器变成汇编语言,更是更复杂。正因为如此,你必须通过锁...

如何精简Unity中使用的字体文件【图】

在游戏开发过程中,为了UI界面美观和显示效果一致性的考虑,大部分游戏都会使用动态字体来表现文字。尤其在这个看脸的时代,一种字体已经无法满足UI同学对美观的需求,因此我们常常发现若干个小则两三兆,大则十几兆的字体文件,这些文件既占包体又占内存。因此,对字体的合理使用和优化已经成为项目中后期优化必不可少的一个步骤。这里介绍《极无双》团队对于字体裁切的思路和方法。这是侑虎科技第176篇原创文章,感谢作者王亮供稿...

自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析【代码】【图】

自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的。仅为学习Unity之用。图片大部分是自己画的,少数是从网上搜来的。您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码。本篇主要记录关卡解析器、小地图图标和对碰撞的原理的探索,需要耐心分析。关卡解析器在一个关卡里,敌方坦克应该...