unity

[Unity][UGUI]IPointerEnterHandler鼠标进入移出事件闪烁问题

匿名 (未验证) 提交于 2019-12-03 00:22:01
IPointerEnterHandler, IPointerExitHandler 鼠标进入,移出事件,闪烁问题 新建一个UIImage,挂载下面的这个脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;//IPointerEnterHandler, IPointerExitHandler public class UI_MouseEnter : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { public void OnPointerEnter(PointerEventData eventData) { Debug.Log("Hello"); transform.localScale = new Vector3(0,0,0); } public void OnPointerExit(PointerEventData eventData) { Debug.Log("Bye"); transform.localScale = new Vector3(1, 1, 1); } } 直接改变 UI 按钮的localScale,就会出现闪烁的BUG

unity EditorWindow通过拖拽获取文件夹或者文件路径

匿名 (未验证) 提交于 2019-12-03 00:22:01
参考: https://blog.csdn.net/lyh916/article/details/45133101 主要就是Event、DragAndDrop的使用了。 void OnGUI() { targetGo = (GameObject)EditorGUILayout .ObjectField (targetGo, typeof(GameObject), true) ; subPath = targetGo == null ? subPath : targetGo .name ; EditorGUILayout .LabelField (string .Format ( "保存路径output path:{0}" , Path .Combine (path, subPath))) ; //获得一个长 300 的框 Rect rect = EditorGUILayout .GetControlRect (GUILayout .Width ( 300 )) ; //将上面的框作为文本输入框 path = EditorGUI .TextField (rect, path) ; subPath = EditorGUILayout .TextField (subPath) ; //如果鼠标正在拖拽中或拖拽结束时,并且鼠标所在位置在文本输入框内 if ((Event .current

Unity插件推荐Editor Console Pro

匿名 (未验证) 提交于 2019-12-03 00:22:01
原文地址: http://forum.china.unity3d.com/thread-26890-1-1.html Unity内置的Console窗口(控制台)是一个重要的开发辅助工具,所有的Log和报错信息都会显示在这里。您也可以通过在代码中添加print()或者Debug.Log()方法调用直接输出信息到Console窗口。 下图是在代码出错的时候大家通常会看到的报错信息: 点击错误信息会打开代码编辑器,并在编辑器中高亮显示出错的代码片段。虽然Unity自带的控制台已经可以满足一些常用需求,但结合一些高级功能会更加有助于项目调试,例如直接在控制台显示代码所在位置并且高亮。 下图是同样的报错信息输出在Editor Console Pro窗口中的样子: 点击错误信息会打开代码编辑器,并在编辑器中高亮显示出错的代码片段。虽然Unity自带的控制台已经可以满足一些常用需求,但结合一些高级功能会更加有助于项目调试,例如直接在控制台显示代码所在位置并且高亮。 下图是同样的报错信息输出在Editor Console Pro窗口中的样子: 通过这个简单的示例,比较上面两张截图会发现,一个很重要的区别是:在Editor Console Pro中,出错的源代码会被直接显示在窗口中,一目了然,方便开发者直接定位出错的地方。 在此直接翻译了官方的使用手册,关于翻译工具的推荐翻译狗 下边是注册链接

Unity使用Time类手写一个时钟计时器

匿名 (未验证) 提交于 2019-12-03 00:22:01
private float timer = 0 f; private int h = 0 ; private int m = 0 ; private int s = 0 ; private string timeStr = string .Empty; void Update () { timer += Time.deltaTime; if (timer >= 1 f) {s++; timer = 0 ;} if (s >= 60 ) {m++;s = 0 ;} if (m >= 60 ) {h++;m = 0 ;} if (h >= 99 ) {h = 0 ;} } void OnGUI(){ timeStr = string .Format ( "{0:D2}:{1:D2}:{2:D2}" , h, m, s); GUI.Label ( new Rect ( 10 , 10 , 100 , 200 ), timeStr); } 文章来源: Unity使用Time类手写一个时钟计时器

unity协程

匿名 (未验证) 提交于 2019-12-03 00:22:01
开启协程 StartCoroutine (IEnumerator xxx);//里面传入协程方法 IEnumerator xxx(){}//协程方法定义 关于yied return 返回值 yield return null;//下一帧开始时继续调用 yiled return new WaitForFixedUpdate;//在FixedUpdate之后调用 yield return new WaitForSeconds (n);//N秒后继续运行 yield return WWW;//等待WWW构建完成后继续进行 协程进行逐步进行方法如下: yield return x1(调用协程); yield return x2(调用协程); 文章来源: unity协程

Unity3d 读Json文件

匿名 (未验证) 提交于 2019-12-03 00:21:02
在最近的版本已经不需要json的插件了,U3D自带了一个JsonUtility类。 不过JsonUtility必须 [ { "id": 1, "name": "血瓶", "type": "Consumable", "quality": "Common", "description": "这个是用来加血的", "capacity": 10, "buyPrice": 10, "sellPrice": 5, "hp": 10, "mp": 0, "sprite": "Sprites/Items/hp" }, { "id": 2, "name": "蓝瓶", "type": "Consumable", "quality": "Common", "description": "这个是用来加蓝的", "capacity": 10, "buyPrice": 10, "sellPrice": 5, "hp": 0, "mp": 10, "sprite": "Sprites/Items/mp" }] 类似于这样的数组json文件解析, 必须返回一个object..所以解决的办法可以是类似于下面这样,先定义一个object类,之后再从中遍历的形式来解析。 { "inforList": [ { "id": 1, "name": "血瓶", "type": "Consumable", "quality":

unity 音频可视化

匿名 (未验证) 提交于 2019-12-03 00:21:02
using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudioVisualization : MonoBehaviour { public static float volume; private AudioClip micRecord; string device; /// <summary> /// 拖尾的移动速度 要和摄像机的移动速度一致 /// </summary> private int speed; private float x; void Start() { //初始化速度的值 speed = 5; device = Microphone.devices[0];//获取设备麦克风 micRecord = Microphone.Start(device, true, 999, 44100);//44100音频采样率 固定格式 } void Update() { volume = GetMaxVolume(); if (Input.GetKey(KeyCode.Escape)) { Application.Quit(); } //要加粒子特效 产生拖尾 transform.Translate(Vector3.right * speed *