unity

Unity to dispose of object

匿名 (未验证) 提交于 2019-12-03 00:48:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Is there a way to make Unity dispose property-injected objects as part of the Teardown? The background is that I am working on an application that uses ASP.NET MVC 2, Unity and WCF. We have written our own MVC controller factory that uses unity to instantiate the controller and WCF proxies are injected using the [Dependency] attribute on public properties of the controller. At the end of the page life cycle the ReleaseController method of the controller factory is called and we call IUnityContainer.Teardown(theMvcController). At that point

Unity Shader - Flat, Gouraud, Phong Shading

匿名 (未验证) 提交于 2019-12-03 00:43:02
Shading mode 只要三角面的代表点(如:三角面中的第一个index点)被光照到什么颜色,就决定了该三角面的整个面的颜色。 某特殊情况,大家应该可以想象到: 如果一个很大的三角面中,第一个index点一个聚光灯照到,那么整个大三角面绘制出来的就是光源色 如果一个很大的三角面中,几乎被一个聚光灯照射到整个面,但就没照射到代表点(第一个index点),那么整个大三角面绘制出来的光源色就没有这个聚光灯的光源色 与Flat相比,仅仅是三角面所有像素颜色是根据三个顶点的光源色插值算出来的,所以上述Flat shading的某特殊情况,Gouraud shading也有类似的问题(顶点没被关照到时的颜色问题) 相比前两者的shading mode,该模式处理光照数据是在fragment阶段处理的,所以能精确控制到没个像素上,当然开销就比较大,像素处理光照时,每个像素的所在的三角面计算光照时的法线都会插值计算一下(根据三角面三顶点插值),所以每个像素处理出来的光照效果是最平滑的。 Flat, Gouraud shading 都是在vertex阶段处理光照数据的 Phong shading是在fragment阶段处理光照数据的 所以如果我们用到了这三种光源处理shading,就按我们需要的风格来选择。 工程下载 (u3d ver : 2017.4.3f1, vs : vs2017

关于Unity中MonoBehaviour的构造函数

匿名 (未验证) 提交于 2019-12-03 00:43:02
关于Unity中MonoBehaviour的构造函数 在学习Unity MVVM UI框架的时候,一不小给一个继承自MonoBehaviour类的子类编写了自定义构造函数,结果调Bug调了两个钟,特此在这里记录一下,MonoBehaviour的构造函数由unity引擎自己调用,什么时候调用,调用几次都不知道的~所以任何关于游戏的逻辑(初始化逻辑)都应该写在Awake或者Start上! 下面是Bug出现的截图,在开始游戏后,构造函数被调用了2次,同时,在结束游戏时,该类的构造函数又被调用了一次。。。。 原文:https://www.cnblogs.com/sword-magical-blog/p/9348304.html

unity

匿名 (未验证) 提交于 2019-12-03 00:39:02
Transform是一个类,用来描述物体的位置,大小,旋转等等信息。 transform是Transform类的对象,依附于每一个物体。也是当前游戏对象的一个组件(每个对象都会有这个组件). Gameobject是一个类型,所有的游戏物件都是这个类型的对象。 gameobject是一个对象, 就跟java里面的this一样, 指的是这个脚本所附着的游戏物件 :获取当前transform组件所在的gameobect unity 原文:https://www.cnblogs.com/nzmx123/p/9246603.html

Unity Shader踩坑笔记-2 ForwordBase-半兰伯特光照模型的问题记录

匿名 (未验证) 提交于 2019-12-03 00:38:01
Shader学习使用的是Unity2018.1.0b void vert(in a2v v,out v2f o){ o.pos=UnityObjectToClipPos(v.vertex); fixed3 Amb = UNITY_LIGHTMODEL_AMBIENT.xyz; float3 worldNormal = normalize(mul(v.normal,(float3x3)unity_WorldToObject)); float3 worldLight = normalize(_WorldSpaceLightPos0.xyz); fixed halfLan = 0.5*dot(worldNormal,worldLight) + 0.5; fixed3 diffuse1 = _LightColor0.rgb * _Diffuse.rgb * halfLan; o.color = Amb + diffuse1; } 右侧为半兰伯特模型的表现效果: 上图有加入了环境光。 然后,当我们把hierarchy面板中的Directional Light禁用掉,有趣的现象就出现了。 直接看代码,半兰伯特漫反射模型的光照是环境光+漫反射才对,然而,我们看到的却是: 为了能让半兰伯特漫反射模型能在无光照时正确的表现环境光的效果,代码可以进行一点点修改即可: fixed halfLan = 0

transparent shadow caster unity

匿名 (未验证) 提交于 2019-12-03 00:38:01
https://forum.unity.com/threads/semitransparent-shadows.276490/ semitransparent shadows dither 类似alpha to coverage 那种技术 在这里有讲 http://gad.qq.com/program/translateview/7200861 先用alpha做discard 在shadow caster 并依赖alpha 最后做模糊 还有个简单方法是 再画套假的 这个解决方案 具体问题具体分析了 transparent shadow caster unity 原文:https://www.cnblogs.com/minggoddess/p/9240595.html

Unity项目中的资源管理

匿名 (未验证) 提交于 2019-12-03 00:38:01
这是我在2017金山技术开放日分享的部分内容。从贴图资源格式配置的介绍开始,引申出资源配置工具,最后再谈谈一整套项目资源管理方案。在GitHub上可以获取到资源配置工具的代码,是基于下面理念的一份简单实现。 一个3D游戏项目中的资源主要由贴图、模型、动作、声音等组成。模型设计师设计模型,场景由模型组成,角色不仅是一个精致的模型还带了各类的动作,包括走路、跑步、待机、攻击等等。各类基础资源构成了游戏的大部分元素。 在我做的剑侠世界手游项目里面有上万的材质,主城更是有7000+的模型。每个角色可以有不同的外装、发型、武器、挂件、坐骑等等。承载这么多资源对内存以及性能都有非常高的要求。一个优秀的资源管理方案可以承载更多内容,满足更多的需求。 贴图资源配置 对于这资源管理,Unity提供非常丰厚的支持。以贴图为例子,Unity支持直接把原始贴图直接放进工程,不需要做任何额外处理。Unity根据贴图配置会自动生成最后的贴图数据。不同平台(IOS、Android、PC)支持的贴图格式不一样,通过配置文件的形式,最后方便的生成不同格式的贴图。这是一个非常好的做法,同时可以直观的在开发环境看到不同格式的贴图表现。 贴图的配置界面 可以看到上图,贴图的配置属性非常多。不同的贴图会有不同的配置,有些属性的配置对内存和性能会有较大的影响。下图可以看到现在这是一张 512 X 512的RGB贴图

Unity ScrollRect滑动

匿名 (未验证) 提交于 2019-12-03 00:37:01
ScrollRect通常是和Mask组件一起使用的。mask组件的功能是使滑动到scrollrect指定区域之外的内容隐藏。 滑动ui层级结构,如下图所示: tabcontrol上绑定着ScrollRect、Mask、Image组件。 Image : Source image 添加的uimask是遮盖效果,使其不能在滑动时对滑动区域外进行操作 添加上网格组件后,content的子层级的位置,只能通过Grid Layout Group的padding属性来改变(子层级下的transform变灰,不可改变), 因为Grid Layout Group添加之后就不可以直接改变其中物体的位置,因此出现了Conent Size Fitter组件,此组件可以对Horizontal、Vertical进行选择,使其自适应(具体含义请百度搜索,在这里不做赘述) 最后要注意的是,如果要实现滑动效果,对于tabcontrol层级的transform中的宽高要格外慎重,这里的宽高区域一定要小于内容的区域,不然就不能实现滑动停留效果(滑动立马回回弹过来)。 亲自试坑,望对大家有帮助 第一次写unity博客,不足地方 请大家指正 文章来源: Unity ScrollRect滑动

Unity判断鼠标是否选中GUI

匿名 (未验证) 提交于 2019-12-03 00:37:01
在Unity中,当GUI与模型处于同一界面时,在操作界面的时候往往会屏蔽掉鼠标对模型的控制操作,这时我们可以使用unity的 Raycast 功能进行判断是否选中了GUI控件: bool CheckGuiRaycastObjects() { PointerEventData eventData = new PointerEventData(GameObject .Find ( "EventSystem" ) .GetComponent <EventSystem>()) ; eventData .pressPosition = Input .mousePosition ; eventData .position = Input .mousePosition ; List<RaycastResult> list = new List<RaycastResult>() ; GameObject .Find (strCanvas) .GetComponent <GraphicRaycaster>() .Raycast (eventData, list) ; //LogOut .Log (list .Count ) ; return list .Count > 0 ; } 文章来源: Unity判断鼠标是否选中GUI