unity

Unity4.6新UI系统初探(uGUI)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-06 18:32:28
一、引言 Unity终于在即将到来的 4.6 版本内集成了 所见即所得 的UI解决方案 (视频) 。事实上从近几个版本开始,Unity就在为这套系统做技术扩展,以保证最终能实现较理想的UI系统。本文试图通过初步的介绍和试用,让读者对这套系统有大体的了解,以便更进一步评估这套UI系统好不好用,适合用在什么项目。为了避免坑挖太深,更进一步的试用和评估我将在《 用uGUI开发自定义Toggle Slider控件 》中进行论述。为论述方便,下文将这套New UI System简称为 uGUI ,并且以 X-UI 指代现有第三方UI插件。 (测试只针对Unity 4.6.0 beta 10,正式版可能会有所出入。目前Unity没提供文档,本人半桶水,欢迎群众在微博或Issues里吐槽!) 二、Rect Transform Rect Transform继承自Transform,是uGUI相比X-UI最显著的区别[ 注1 ]。当你为Empty GameObject加入一个UI Component时,Transform会自动转换为Rect Transform。Rect Transform尽量整合了X-UI常见的 anchor (相对父物体的锚点), pivot (中点), stretch (拉伸)等属性。值得一提的是,这里的 anchor 是Rect而非Vector2,因为它不仅用于偏移

Unity 绘制Mesh线条

那年仲夏 提交于 2019-12-06 15:34:18
using UnityEngine; using System.Collections; using System.Collections.Generic; public struct SegmentPoint { public Vector3 normal; public Vector3 pos; }; public class DrawMesh_Plane : MonoBehaviour { MeshFilter meshFilter; /// <summary> /// 面片中的最后一个点 /// </summary> SegmentPoint lastPoint; SegmentPoint penultPoint; bool startDraw = false; bool twoPoint = false; /// <summary> /// 线条半径 /// </summary> float r; /// <summary> /// 包含meshfilter、meshrenderer、材质球组件的预设体 /// </summary> public GameObject linePrefab; public Transform lineParent; /// <summary> /// 平滑点数 /// </summary> public int smooth = 3;

Unity之多态

十年热恋 提交于 2019-12-06 14:33:09
本文链接:https://blog.csdn.net/u010718707/article/details/41967149 1.方法隐藏: 如果子类方法的方法名和基类的方法名相同时,系统将隐藏基类同名方法,自动调用子类的同名方法 2.virtual:用在父类中,表示方法可以重写 override:用在子类中,重写父类的方法 例子: class Father{ public virtual void Print{ Console.WriteLine("父类的Print()"); } } class Son:Father{ public override void Print(){ Console.WriteLine("父类的Print()"); } } 注:virtual关键字和override关键字是成对出现的,否则是语法错误。 3.父类的引用指向子类的实例 class Son:Father { static void Main(string[] args) { Father s = new Son();//相当于把子类的值赋给了父类 (子类自动转换为父类) 父类 子类 s.Print(); Console.ReadLine(); } } 很好的学习资源哦http://www.gopedu.com/course/explore/U3D 4.多态:(不同对象调用相同的方法

Unity如何更改精灵中心点

大憨熊 提交于 2019-12-06 13:48:56
Unity虽然可以改中心点但是仅支持几个特定位置。 如果是一个你是切割的精灵,则可以进入精灵编辑器中调整 打开精灵编辑器后按调整如下图所示的pivot选项,我在这里把精灵调整成了右上。 在精灵编辑器中则可以随意调整中心点 来源: https://www.cnblogs.com/ymz-xzm/p/11987187.html

unity 隐藏某个对象

白昼怎懂夜的黑 提交于 2019-12-06 12:15:11
1.设置坐标,将坐标设置到屏幕外(LocalPosition = new Vector3(10000, 0, 0)) 2.设置Layer,原理是相机会剔除指定的层级,相机Camera的Culling Mask 3.render.enable 4.设置透明度(ngui的panel,ugui的CanvasGroup) 5.设置缩放,直接设置成0 6.直接删除不需要的对象:Destory 来源: https://www.cnblogs.com/wang-jin-fu/p/11982547.html

Unity中文本AssetBundle的解析

▼魔方 西西 提交于 2019-12-06 11:05:56
 Unity在其安装目录下提供了许多实用的小工具,就存放在unity安装目录下的:Editor/Data/Tools, 其中该路径下的WebExtract.ext和binary2text.exe可以用来解析Text Asset打包出的AssetBundle, 也就是将二进制的ab反序列化成原来的文本格式。  使用这两个exe应用程序,我们就能了解到每次补丁中打出去的文本AB内部到底是什么,进而排查在游戏更新时出现的一些问题。不过在解析的时候操作步骤比较繁琐,所以笔者抽空写了一个bat脚本,自动化解析(顺便回顾下批处理的语法=.=),具体的bat脚本如下: @echo OFF :LOOP :: 使用方式:将脚本直接放到C:\Users\lin\AppData\Roaming\Microsoft\Windows\SendTo目录下,后续即可通过右键AB,点击“发送到” 选择对应的脚本 rem 前提是将下方的webExtractPath和binary2testPath变量的unity路径替换成你本地unity安装目录 set webExtractPath=C:\"Program Files\Unity565\Editor\Data\Tools\WebExtract.exe" set binary2testPath=C:\"Program Files\Unity565\Editor

CSharp重写对象池

試著忘記壹切 提交于 2019-12-06 10:21:09
编者注 由于在Unity当中,需要申请大量的struct和object。这两个东西在CSharp当中并不统一。导致申请的东西很多,CSharp的GC调用,会导致Unity发生Stop world现象。这个将会让Unity帧速率降低,从而影响用户体验。需要自己找或者写对象池。编者了解Java,更倾向从Java当中抄一部分作为接口与实现。 需求 .Net Standard 2.0标准API实现线程安全的struct及object的池。 调研 Unity 原生 通过Google并没有查找到Unity原生的对象池,看来Unity的原生对象,官方并不提供管理。 Standard 2.0 先到附录3尝试获取信息,发现 .Net core 具有所需要的ArrayPool,但是在 .Net Standard 2.0 搜索并未发现该内容。 Microsoft简单对象池 通过附录4,微软通过ConcurrentBag创建的一个简单的对象池。虽然微软写的是Object但是,通过ConcurrentBag源代码查看到范型T并未规定为class,能够作为实施备选。并且ConcurrentBag解决了多线程访问。 ASPNet/Extensions/ObjectPool .NET Extensions 能够看到很多的类库。其中就有编者所关注的ObjectPool。通过载入Rider

D-Bus自启动服务(五)

南楼画角 提交于 2019-12-06 08:34:57
D-Bus 中的service,有两种启动模式:一种开机就启动,另一种按需启动服务 在之前看的/etc/dbus-1/session/conf配置文件有这一行配置: <standard_session_servicedirs />   这个就按需启动的service文件目录:/usr/share/dbus-1/service 下面我们来做一个按需启动的例子 准备条件:参考 D-Bus 配置相关(四) 最后编译部分 如果做了(四)的实验,记得删掉加的<deny send_destination="hello.world.service"/>  1. 进入/usr/share/dbus-1/service 创建hello.world.service文件,添加下列配置 [D-BUS Service] Name=hello.world.service Exec=/home/june/document/comb/service Name为提供服务的bus name Exec为可执行文件的执行路径 2.查看服务是否被DBus-daemon识别 june@june:~/document/comb$ dbus-send --session --print-reply --dest=org.freedesktop.DBus / org.freedesktop.DBus

Unity容器<1>

走远了吗. 提交于 2019-12-06 06:56:20
参考地址: https://docs.microsoft.com/en-us/previous-versions/msp-n-p/dn170416(v=pandp.10) 总览 Unity是一个轻量级的,可扩展的依赖项注入容器, 支持构造函数,属性和方法 调用注入。 简化的对象创建,尤其是对于分层对象结构和依赖关系。 需求抽象;这使开发人员可以在运行时或配置中指定依赖关系,并简化横切关注点的管理。 通过将组件配置推迟到容器来提高灵活性。 服务定位功能,允许客户端存储或缓存容器。 实例和类型拦截(Unity for Windows Store应用程序不支持)。 Unity是一个通用容器,可用于任何类型的基于Microsoft.NET Framework的应用程序。它提供了依赖注入机制中常见的所有功能,包括注册类型映射和对象实例,解析对象,管理对象生存期以及将依赖对象注入到构造函数和方法的参数中以及作为对象属性值的方法。 Unity是可扩展的。您可以编写更改容器行为或添加新功能的容器扩展。例如,Unity提供的拦截功能可作为容器扩展来实现,您可以使用该功能来捕获对对象的调用并向目标对象添加其他功能和策略。 目标:松散耦合系统。 为什么要使用 优势 可维护性 可测试性:测试驱动开发(TDD)等方法要求您在编写任何代码以实现新功能之前编写单元测试,而这种设计技术的目标是提高应用程序的质量。