位置: 编程技术 - 正文

uGUI实现遥感(unet遥感图像分割)

编辑:rootadmin
好久没有写文章了,最近在做项目是用的unity最新的ui系统UGUI,项目需要做一个摇杆,网上大部分都是用的插件和NGUI做的摇杆,unity自带的摇杆也不怎么好用,而最新的unity4.6.x来了,加入了最新的UI系统“UGUI”,那我们怎么用UGUI来制作摇杆呢~大神勿喷,本人是技术渣渣。比较出色的摇杆插件《Easy Touch》(很强大)还是主要讲讲我们自己怎么做。首先在unity场景里面新建一个空物体和两个Image,把空物体放在创建Image自动生成的Canvas里面,再把两个Image放在空物体里Image建立方式:GameObject->UI->Image 或者直接在“Hierarchy”右键然后UI->Image,看喜好。空物体和两个Image的命名看个人喜好。威恩的节点是这样的: 节点中的joystack是刚刚建立的空节点。Backgound是摇杆的背景。JoystackControl是真实的可以拖动的摇杆。把Backgound和JoystackControl的SourceImage替换成自己喜欢的图片,并且把JoystackControl的图片缩小点,这里我就用系统自带的图片了,威恩这两个节点的inspector如下(我修改过得地方用红框标注了,其他都没改): 如下: 那么样子有了就需要让他动起来,需要三个类“EventTriggerListener”、“JoystackCc”、“PlayerMoveControl”。EventTriggerListener:在NGUI开发的时候处理事件都会用到UIEventListener,我们已经用的习惯的不得了,而UGUI则不是这种机制,并且我觉得这种是最合理的方式,所以自己写一套类&#;的。只是一个帮助类,不需要挂在任何的游戏对象上。JoystackCc:这是主要来控制摇杆的。挂在JoystackControl节点上PlayerMoveControl:这是主要来通过摇杆来控制角色的。挂在你想控制的物体上直接上代码,写了注释,就不哔哔了。EventTriggerListener.cs[C#] 纯文本查看 复制代码?using UnityEngine;using System.Collections;using UnityEngine.EventSystems;using System.Collections.Generic; /// /// UGUI事件监听类/// public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger{ public delegate void VoidDelegate (GameObject go); public delegate void VectorDelegate(GameObject go, Vector2 delta); public VoidDelegate onClick; public VoidDelegate onDown; public VoidDelegate onEnter; public VoidDelegate onExit; public VoidDelegate onUp; public VoidDelegate onSelect; public VoidDelegate onUpdateSelect; public VectorDelegate onDrag; public VoidDelegate onDragOut; static public EventTriggerListener Get (GameObject go) { if(go==null){ Debug.LogError("EventTriggerListener_go_is_NULL"); return null; } else{ EventTriggerListener listener = go.GetComponent(); if (listener == null) listener = go.AddComponent(); return listener; } } public override void OnDrag(PointerEventData eventData) { if (onDrag != null) onDrag(gameObject, eventData.delta); } public override void OnEndDrag(PointerEventData eventData) { if (onDragOut != null) onDragOut(gameObject); } public override void OnPointerClick(PointerEventData eventData) { if(onClick != null) onClick(gameObject); } public override void OnPointerDown (PointerEventData eventData){ if(onDown != null) onDown(gameObject); } public override void OnPointerEnter (PointerEventData eventData){ if(onEnter != null) onEnter(gameObject); } public override void OnPointerExit (PointerEventData eventData){ if(onExit != null) onExit(gameObject); } public override void OnPointerUp (PointerEventData eventData){ if(onUp != null) onUp(gameObject); } public override void OnSelect (BaseEventData eventData){ if(onSelect != null) onSelect(gameObject); } public override void OnUpdateSelected (BaseEventData eventData){ if(onUpdateSelect != null) onUpdateSelect(gameObject); }}JoystackCc.cs[C#] 纯文本查看 复制代码?using UnityEngine;using System.Collections; public class JoystackCc : MonoBehaviour { private Vector3 Origin; Transform mTrans; private Vector3 _deltaPos; private bool _drag = false; private Vector3 deltaPosition; float dis; [SerializeField] private float MoveMaxDistance = ; //最大拖动距离 [HideInInspector] public Vector3 FiexdMovePosiNorm; //固定8个角度移动的距离 [HideInInspector] public Vector3 MovePosiNorm; //标准化移动的距离 [SerializeField] private float ActiveMoveDistance = 1; //激活移动的最低距离 void Awake() { EventTriggerListener.Get(gameObject).onDrag = OnDrag; EventTriggerListener.Get(gameObject).onDragOut = OnDragOut; EventTriggerListener.Get(gameObject).onDown = OnMoveStart; } // Use this for initialization void Start () { Origin = transform.localPosition; //设置原点 mTrans = transform; } // Update is called once per frame void Update() { dis = Vector3.Distance(transform.localPosition, Origin); //拖动距离,这不是最大的拖动距离,是根据触摸位置算出来的 if (dis >= MoveMaxDistance) //如果大于可拖动的最大距离 { Vector3 vec = Origin &#; (transform.localPosition - Origin) * MoveMaxDistance / dis; //求圆上的一点:(目标点-原点) * 半径/原点到目标点的距离 transform.localPosition = vec; } if (Vector3.Distance(transform.localPosition, Origin) > ActiveMoveDistance) //距离大于激活移动的距离 { MovePosiNorm = (transform.localPosition - Origin).normalized; MovePosiNorm = new Vector3(MovePosiNorm.x, 0, MovePosiNorm.y); } else MovePosiNorm = Vector3.zero; } void MiouseDown() { if ((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)) { } else mTrans.localPosition = Origin; } Vector3 result; private Vector3 _checkPosition(Vector3 movePos, Vector3 _offsetPos) { result = movePos &#; _offsetPos; return result; } void OnDrag(GameObject go, Vector2 delta) { if (!_drag) { _drag = true; } _deltaPos = delta; mTrans.localPosition &#;= new Vector3(_deltaPos.x, _deltaPos.y, 0); } void OnDragOut(GameObject go) { _drag = false; mTrans.localPosition = Origin; if (PlayerMoveControl.moveEnd != null) PlayerMoveControl.moveEnd(); } void OnMoveStart(GameObject go) { if (PlayerMoveControl.moveStart != null) PlayerMoveControl.moveStart(); }}PlayerMoveControl.cs[C#] 纯文本查看 复制代码?using UnityEngine;using System.Collections; public class PlayerMoveControl : MonoBehaviour { private Transform _mTransform; public JoystackCc _mJoystackCc; public float moveSpeed = ; public delegate void MoveDelegate(); public static MoveDelegate moveEnd; public static MoveDelegate moveStart; public static PlayerMoveControl Instance; // Use this for initialization void Awake() { Instance = this; _mTransform = transform; moveEnd = OnMoveEnd; moveStart = OnMoveStart; } void Start () { } void OnMoveEnd() { _turnBase = false; } void OnMoveStart() { _turnBase = true; } // Update is called once per frame private float angle; private bool _turnBase = false; void Update() { if (_turnBase) { Vector3 vecMove = _mJoystackCc.MovePosiNorm*Time.deltaTime*moveSpeed/; _mTransform.localPosition&#;=vecMove; angle = Mathf.Atan2 (_mJoystackCc.MovePosiNorm.x, _mJoystackCc.MovePosiNorm.z) * Mathf.Rad2Deg - ; _mTransform.localRotation = Quaternion.Euler(Vector3.up*angle); } }}建好这三个类之后,把他们绑定到相应的节点上。都挂在哪,代码上面有写测试一下,威恩新建了一个cube来作为测试对象,加了个plane作为“伪”地面,太黑了再打个灯….下面是测试效果: 如果有任何问题直接留言~尽自己所能帮忙解决~

推荐整理分享uGUI实现遥感(unet遥感图像分割),希望有所帮助,仅作参考,欢迎阅读内容。

uGUI实现遥感(unet遥感图像分割)

文章相关热门搜索词:opencv处理遥感影像,opencv遥感图像处理,yolo遥感图像检测,遥感envi,unet遥感图像分割,遥感envi,遥感图像获取,遥感图像获取,内容如对您有帮助,希望把文章链接给更多的朋友!

手游频繁崩溃”闪退”? 从程序上找原因 手游频繁崩溃闪退?从程序上找原因作为玩家,当游戏crash的时候是什么心情,如果这个游戏玩起来还不错的话,那我可能还会打开第二次,如果这个游

一款已上市MMO手游地图同步方案总结 1.客户端地图子的相关知识在2.5D的MMO游戏里,角色是通过3D的方式渲染,2D的地图是通过2D的方式显示,所以在客户端一般会有三个坐标系:a)3D坐标系:

设计战斗引导剧情(欢迎探讨) 需求:为已完成的战斗模块,增加一个新手引导,当条件成立时,激活事件。根据策划给出的文案分析事件:主要是战斗过程中插入对话/操作引导(1)

标签: unet遥感图像分割

本文链接地址:https://www.jiuchutong.com/biancheng/372808.html 转载请保留说明!

上一篇:<Unity UGUI>使用c#反射实现UGUI文本显示的国际化

下一篇:手游频繁崩溃”闪退”? 从程序上找原因(手游频繁崩溃怎么解决)

  • 外经证预缴税款征收率
  • 工业企业销售收入税率
  • 委托加工物资的消费税计入成本吗
  • 餐饮毛利率多少是赚钱的
  • 调整多计提所得税的分录
  • 报账员是会计还是出纳
  • 固定资产净残值率
  • 低值易耗品残料有哪些
  • 物流公司进项发票分录
  • 外币折算会计处理例题
  • 收到货物记账凭证
  • 事业单位现金收支管理办法
  • 进料料件内销账务处理怎么做?
  • 出口免税收入会退税吗
  • 会计职业道德的作用
  • 房产税每次申报都要维护吗
  • 不付供应商尾款了怎么清账
  • 白蚁防治费计入什么科目
  • 小规模开专票不超过45万要交税吗
  • 未及时申报个税的理由
  • 合理损耗算入账价值吗
  • 购入苗木的会计分录
  • 固定资产借方表示什么意思
  • 赠送礼品的具体做法有许多技巧和讲究大致涉及
  • 平销返利税率
  • 库存商品无发票所得税怎么调增
  • win10指纹传感器在哪里
  • 怎么让资产负债率下降
  • mac电脑command+s
  • win10ie浏览器打开就崩溃
  • 鱼湖国家森林中心在哪里
  • 跨期摊提类账户
  • Xpath元素定位之同级节点,父节点,子节点
  • 审计项目种类
  • 税控抵税
  • 广告代理费收取比例
  • 数学建模赋权
  • 已交土地使用金的划拨商品房与商品房的的区别
  • 资产负债表里长期股权投资是什么意思
  • 其他应付款怎么做账
  • 购买牵引车和挂车购车流程
  • 蔬菜开票税率是多少
  • 股权投资公司属于证券公司
  • 以前年度应收账款错误如何调整
  • 核定征收过了时间就不能申请了吧
  • 土地出让金返还比例是多少
  • 积分兑换礼品需要什么
  • 咨询服务费可以全额扣除吗
  • 收回理财款会计分录
  • 工厂投产前的准备工作有哪些
  • 工程施工人工费如何结转
  • 分公司内部管理模式
  • 什么是划分?划分应当遵守哪些规则?
  • 残保金计算人数1.02怎么计算
  • 奖励罚款怎么做分录
  • 智能abc不能输入汉字
  • ubuntu20.04.2安装
  • freebsd操作命令
  • window系统怎么复制粘贴
  • macbook移到废纸篓
  • explorer.exe进程被结束怎么恢复
  • Win7系统打开文件夹没有自动排列选项
  • onenotewindows10
  • linux cp 不是目录
  • Centos 6.4 64位版命令行下设置无线网卡教程
  • windows8怎么使用
  • win10系统谷歌浏览器为什么打不开
  • win10文件夹右上角搜索不能用
  • js原型继承和构造继承
  • 浅谈jQuery中Ajax事件beforesend及各参数含义
  • jquery?
  • 一个简单的合并单元
  • jquery制作下拉菜单
  • jquery插件大全
  • jquery easyui datagrid实现增加,修改,删除方法总结
  • 发票税务抽奖怎么操作
  • 运输发票抵税多少个点
  • 辽宁事业单位职测考试时间多长
  • 怎么删除天眼查的犯罪记录
  • 20万块手表交多少税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设