UGUI 要点总结

一:(碰撞体)触发信息检测:

发生碰撞的两个物体应满足的条件:

NO1:两物体都应该有碰撞体

NO2:其中一个带刚体;

NO3:检测触发信息的脚本需绑定在带刚体的物体上

1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay( Collision collisionInfo )  当逗留碰撞器

获取材质颜色

Public Cube1;//脚本绑在Cube1上,碰撞器

Public Cube2;//Cube2进行碰撞移动的物体

Public render rend;

void Start ()

{

//获取当前物体的组件

rend = GetComponent<Renderer>();

}

void OnCollisionEnter(Collision collisionInfo)

{

//Debug.Log(gameobject.name);

//Cube2获取材质黄色             collisionInfo.gameObject.GetComponent<Renderer>().material.color = Color.yellow;

Cube2.transform.Translate(Vector3.down *2f * Time.deltaTime);

}

void OnCollisionStay( Collision collisionInfo )

{

Debug.Log(collisionInfo.gameObject);

//cube.position = Vector3.MoveTowards(new Vector3(3,2,0),new Vector3(3,5,0),2f);

//cube.transform.Translate(Vector3.forward * 2f);

cube.transform.Translate(Vector3.right*0.5f*Time.deltaTime);

rend.material.color = Color.blue;

//Cube1获取颜色为蓝色

}

void OnCollisionExit(Collision collisionInfo)

{

Debug.Log("碰撞结束!");

//Cube1获取颜色为黑色

rend.material.color = Color.black;

}

二:(触发器)触发信息检测

发生碰撞的两个物体应满足的条件:

NO1:两物体都应该有碰撞体;

NO2:最少要有一个刚体碰撞器并且勾选了IsTrigger复选框,另一个最少要有一个碰撞器组件;

NO3:检测碰撞的脚本必须附加在那个带有刚体的触发器;
1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器
2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器
3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器

三:加载场景

using UnityEngine.SceneManagement;

SceneManager.LoadScene("Simulation training Scene");

四:鼠标跟随(坐标转换)

 Canvas canvas;

RectTransform rectTransform;

Vector2 pos;

Vector3 result;

void Start()

{

rectTransform = transform as RectTransform;

canvas = GameObject.Find("Canvas").GetComponent<Canvas>();

}

void Update()

{

if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as        RectTransform, Input.mousePosition, canvas.worldCamera, out pos))

{

rectTransform.anchoredPosition = pos;

rectTransform.parent = canvas.transform;

}

}

五:Toggle添加监听

public GameObject Tog3;

Tog3.GetComponent<Toggle>().onValueChanged.AddListener(delegate

{

this.OnClick(Tog3);

});

void OnClick( GameObject tog)

{

}

六:文字标签 显示:

public List<GameObject> ToolPic=new List<GameObject>();

public List<GameObject> ToolPicName = new List<GameObject>();

void Start()

{

for (int i = 0; i < ToolPic.Count; i++)

{

EventTriggerListener.Get(ToolPic[i]).onEnter += OnMouseEnterImage;

EventTriggerListener.Get(ToolPic[i]).onExit += OnMouseExitImage;

}

}

void OnMouseEnterImage(GameObject btn)

{

   for (int i = 0; i < ToolPic.Count; i++)

  {   //根据图片显示对应的文本

     if (btn == ToolPic[i])

    {

    ToolPicName[i].SetActive(true);

    }

   }

}

void OnMouseExitImage(GameObject btn)

{

for (int i = 0; i < ToolPic.Count; i++)

{

  if (btn == ToolPic[i])

   {

   ToolPicName[i].SetActive(false);

   }

}

}

七:3D 物体360度旋转  

public Transform target;

public float speed = 1f;

void Start()

{

  if (target == null) target = transform;

}

public void OnDrag(PointerEventData eventData)

{

  //方法一:

  //target.localEulerAngles = new Vector3(0f, target.localEulerAngles.y + eventData.position.y - y, 0f);

  //y = eventData.position.y;

  //方法二:

   target.localRotation = Quaternion.Euler(0f, -0.5f * eventData.delta.x * speed, 0f) *  target.localRotation;

}

public void OnBeginDrag(PointerEventData eventData)

{

  y = eventData.position.y;

}

时间: 2024-08-05 23:34:00

UGUI 要点总结的相关文章

【Unity】基于MVC模式的背包系统 UGUI实现

本文基于MVC模式,用UGUI初步实现了背包系统. 包含点击和拖拽两种逻辑,先献上源代码,工程和分析稍后补充. Model 层 using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; /// <summary> /// 脚本功能:MVC模式--Model层,定义物品结构,保存物品数据 /// 添加对象:Bag 背包(Canvas下的空对象) ///

如何简单的实现新手引导之UGUI篇

一个完整的游戏项目肯定是要做新手引导的,而引导做的好坏可能会影响玩家的留存.那么怎么简单的实现个简有效的引导呢!先不说废话,先看看效果,这是一个基于UGUI做的一个简单的引导! 怎么样,看着是那么回事吧?看起来确实有点丑,如果给按钮边缘加上缩放或者流光特效,那么逼格瞬间就上去了,可惜,没找到资源.最重要的是实现起来灰常简单,就一个函数搞定. 1,如何实现引导: 1,首先创建一个Mask遮罩,保证任意地方接受不到点击,适当的调整下Alpha. 2,将要点击的按钮高亮,保证引导按钮可以响应到点击事件

用uGUI开发自定义Toggle Slider控件

一.前言 写完<Unity4.6新UI系统初探>后,我模仿手机上的UI分别用uGui和NGUI做了一个仅用作演示的ToggleSlider,我认为这个小小的控件已能体现自定义控件的开发过程.由于手头上没有mac版,暂时未能真机测试,PC上的效果如下: 二.制作过程 完整工程托管于github,分为uGui和NGUI两个project.考虑到版权问题,工程里不含NGUI,同学们需自行将NGUI导进工程.NGUI需要Unity 4.5,uGui需要Unity 4.6. 三.功能点 滑块可以拖动,从

UGUI使用BMFont制作美术字体&lt;一&gt;

不多说,先来效果图: 从头开始讲开发流程: 在Unity3d开发过程中,经常需要将美术提供的美术字组合成一个字体库,方便unity中的调用,BMFont则为此提供了不错的功能支持,它的下载地址在这里.它的使用方法网上有很多教程,这里不做解释,如果要使用此工具,要注意的是,这里记得使用xml格式,导出的图片为一张. 导出来的资源有:对应的图片,还有一个以fnt结尾的文件,如果打开此文件可以看到它就是一个xml文件: 在BMFont软件中我们这样操作:Options->Save configurat

UGUI与NGUI的区别与优缺点

1. NGUI与UGUI的区别 1) uGUI的Canvas 有世界坐标和屏幕坐标   2) uGUI的Image可以使用material     3) UGUI通过Mask来裁剪,而NGUI通过Panel的Clip    4) NGUI的渲染前后顺序是通过Widget的Depth,而UGUI渲染顺序根据Hierarchy的顺序,越下面渲染在顶层.    5) UGUI 不需要绑定Colliders,UI可以自动拦截事件   6) UGUI的Anchor是相对父对象,没有提供高级选项,个人感觉u

javascript必须知道的知识要点(二)

该文章不详细叙述各知识要点的具体内容,仅把要点列出来,供大家学习的时候参照,或者检测自己是否熟练掌握了javascript,清楚各个部分的内容. 内建对象可划分为数据封装类对象.工具类对象.错误类对象,如下. 数据封装类对象: Number对象 String对象 Boolean对象 Array对象 Object Function 工具类对象: Math对象 Date对象 RegExp对象 错误类对象: Error对象  Number对象 JavaScript 只有一种数字类型.Number,包括

ZooKeeper架构设计及其应用要点

ZooKeeper是一个开源的分布式服务框架,它是Apache Hadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本. 总体架构 ZooKeeper分布式协调服务框架的总体架构,如图所示: ZooKeeper集群由一组

XHTML学习要点

目标 掌握XHTML语法,能正确书写出符合规则的文档. 要点 基本概念,与HTML有什么不一样 基本语法规则: XHTML 文档必须拥有一个根元素 标签名.属性名称必须小写 属性值必须加引号 属性不能简写 !DOCTYPE不可缺少 不允许空标签,<hr> , <br> 和 <img>应被替换为<hr />, <br /> 和 <img />. 除!DOCTYPE外,其他标签必须要被关闭. 非空标签必须使用结束标签. 空标签也必须被关闭

如何编写更棒的代码:11个核心要点

作为一个合格的程序员,有太多的理由促使你去编写干净利落且可读性强的代码.最重要的是因为你编写的代码,将来会有很多人一次次地阅读.当你有一天回过头来看自己的代码时,你就会明白编写优雅的代码是多么的重要.另外,如果别人来阅读你编写的代码,你是否想知道别人看到那些烂代码无比抓狂的感受.因此,花多一点的时间去编写优雅的代码,将来说不定会给你节省更多的时间. 那么,如何编写更棒的代码,下面是11条基本规则: 1.保持方法简短扼要 2.永远永远不要将同一个变量用于不同的目的 3.尽可能让变量和方法的名称能够