NGUI多分辨率下完美分布式协同开发:不同分辨率下相对于屏幕坐标的Perfab数据不再丢失

开发问题:

NGUI分布式开发中,用git管理资源,团队成员每人负责一个perfab,所有现对于屏幕大小的相对位置的perfab因为引用了perfab外的数据,导致perfab的Anchor锚点数据丢失,最后的perfab集成后,必须重新设置,导致开发成本大幅度提升。

原因分析:

因为Unity预制体的本身结构,导致预制体中引用非当前预制体中的任何对象,那么这个预制体中记录的引用数据会丢失。

案例:

我们需要一个 HP血条,任意分辨率下从屏幕的左上角,由屏幕外移动到屏幕内,我们将功能做成一个预制体,由队友实现功能,最后由Master合并到主场景中。

完美过程:

我们提前做成一个HPPerfab,并生成对应的perfab,添加到主场景中,队友只需要更新实现功能后提交,master更新后,功能效果完美复现,master无需做任何事情。

案例分析:

如果想做到完美过程,就需要prefab实现左右的功能,并保证perfab的引用数据不会丢失。

实现过程:

1.我们将指定的功能做成一个Perfab,我们称为PerfabRoot,提前放置到场景的制定位置,这个由Master操作,只有Master有权限操作场景。

2.如下图,我们将预制体中所有相对于Camer(屏幕)的相对位置,全部相对于预制体根节点PerfabRoot来设置,而不相对于UI Root或UI Root下的Camera对象设置,这样预制体内的数据全部引用的内部对象,数据也不会产生丢失问题。

如果所示,LeftTopCorner就是我们的PerfabRoot 

2.1 PerfabRoot的属性要定义为UI 
2.2 PerfabRoot添加UI Anchor脚本,【UI Camra】属性设置为None 
,这样运行时脚本会自动将显示当前对象的Camera添加到 【 
UI Camera】属性中。 
2.3 PerfabRoot需要添加UI Panel脚本,如果不加,所有现对于PerfabRoot的节点都无法设置Anchor

效果图: 

动画实现: 
【Unity NGUI游戏开发之三】TweenPosition位移动画(二):相对于UIAnchor不同分辨率下的完美适配位移动画 
http://blog.csdn.net/teng_ontheway/article/details/47070295

参考文章: 
Setting the anchor property on an NGUI Widget? 
http://hutonggames.com/playmakerforum/index.php?topic=8187.0

UIAnchor is still useful.Why UIWidget anchor target is Lost? 
http://www.tasharen.com/forum/index.php?topic=12313.0

【Unity3D游戏开发】NGUI之多分辨率下完美分布式协同开发 (五)的更多相关文章

  1. C++开发安卓、windows下搭建Android NDK开发环境

    1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个 ...

  2. iTOP-4418开发板Qt系统下运行摄像头测试程序

    编译环境:Ubuntu 12.04 交叉编译工具链:gcc 4.4.1 一.添加编译器的环境变量 打开~/.bashrc文件,修改环境变量,如下图:   修改完后,更新环境变量,使用命令”source ...

  3. Windows 下最佳的 C++ 开发的 IDE 是什么?

    作者:渡世白玉链接:https://www.zhihu.com/question/19589089/answer/30312199来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  4. Git学习笔记(三)远程库(GitHub)协同开发,fork和忽略特殊文件

    远程库 远程库,通俗的讲就是不再本地的git仓库!他的工作方式和我们本地的一样,但是要使用他就需要先建立连接! 远程库有两种,一个是自己搭建的git服务器:另一种就是使用GitHub,这个网站就是提供 ...

  5. [原创].NET 分布式架构开发实战之一 故事起源

    原文:[原创].NET 分布式架构开发实战之一 故事起源 .NET 分布式架构开发实战之一 故事起源 前言:本系列文章主要讲述一个实实在在的项目开发的过程,主要包含:提出问题,解决问题,架构设计和各个 ...

  6. Unity3D游戏UI开发经验谈

    原地址:http://news.9ria.com/2013/0629/27679.html 在Unity专场上,108km创始人梁伟国发表了<Unity3D游戏UI开发经验谈>主题演讲.他 ...

  7. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

  8. [Unity3D]Unity3D游戏开发之跑酷游戏项目解说

    大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...

  9. [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(下)

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. java中hashCode方法与equals方法的用法总结

    首先,想要明白hashCode的作用,必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重 ...

  2. Android课程---时间日期对话框

    activity_ui2.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  3. 奥迪--S5

    --型号:S5 --生产:奥迪进口 --价格:60-80W --发动机:3T 333马力 V6,机械增压 --变速箱:7档双离合 --气缸排列:V --总部:德国,英戈尔施塔特 --类型:中型车 -- ...

  4. ModSecurity 白名单设置

    方法一.SecRuleRemoveById 指令:通过Rule ID禁用指定规则 #waf whitelist <LocationMatch .*> SecRuleRemoveById 9 ...

  5. Flink - state管理

    在Flink – Checkpoint 没有描述了整个checkpoint的流程,但是对于如何生成snapshot和恢复snapshot的过程,并没有详细描述,这里补充   StreamOperato ...

  6. IOS 单例模式的写法

    iOS的单例模式有两种官方写法,如下: 1)不使用GCD的方式 #import "Manager.h" static Manager *manager; @implementati ...

  7. django for monkey(chapter one)

    一.获取设备驱动 class monkey(object): def get_devices(self): self.a = os.popen('adb devices') self.devices ...

  8. 阻塞队列LinkedBlockingQueue和并发队列ConcurrentLinkedQueue

    LinkedBlockingQueue: public class LinkedBlockingQueue<E> extends AbstractQueue<E> implem ...

  9. Trace-跟踪高消耗的语句需添加哪些事件

    通常接手一台数据库服务器后,我们会开启Profiler跟踪来了解SQL Server的繁忙情况.我们首先会想到的是监控CPU或Duration超过某一阈值的语句/过程.那么所创建的Trace添加哪些事 ...

  10. 【转】Linux下怎样检查、如何查看某软件包是否已经安装?

    因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa ...