unity editor

我的Unity冷知识记录

天涯浪子 提交于 2020-04-25 09:46:34
UGUI图片沿X或Y翻转180°后会失去射线检测效果[2018.1] 原因: Canvas的GraphicRaycaster的`Ignore Reversed Graphics`选项决定反转的Graphic是否会被射线检测忽略 Mask组件的Show Mask Graphic属性在Animation动画中改变后无效 [2018.2] 可能是bug Editor中RectTransform的锚点消失[2018.2]. Bug: 重启Editor没用,需要关闭Scene标签后重新打开.或者试试在[Window]—>[Layouts]中重新应用窗口布局 Animator.Rebind() 在animator组件disable之前调用它,回滚动画到动画开始的状态. Description 描述 Rebind all the animated properties and mesh data with the Animator. 重新绑定动画器的所有动画的属性和网格数据。 This function can be used when you manually change your GameObject hierarchy by script, like combining meshes or swap a complete transform hierarchy.

Unity 游戏框架搭建 2019 (二十七、二十八)弃用的代码警告解决&弃用的代码删除

妖精的绣舞 提交于 2020-04-14 13:21:06
【推荐阅读】微服务还能火多久?>>> 在前两篇,我们把所有的示例重头到尾整理了一遍。 当前的状态如下: 要做的事情: (完成) 备份:导出文件,并取一个合理的名字。 遗留问题: (完成) 第八个示例与之前的示例代码重复,功能重复。 (完成) 方法所在类的命名有问题。 菜单栏显示顺序问题。 弃用的代码警告 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。 每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。 每次有 API 变更的时候做一次备份,备份的名字采用 QFramework_vX.Y.Z 格式。 每次进行整理的时候要确保是在功能有效的情况下进行删除和变更。 示例分类: 知识学习&收集 API 收集 C# 语法实践 库本身的功能 规则实现 使用流程提供及优化 效率提升(编码体验、逻辑复用) 项目实用工具收集 我们看下以上遗留问题里,示例重复这个做完了,还差一个菜单栏显示顺序问题,还有一个弃用的代码的警告。 两个看起来,弃用代码的警告马上就有思路了,就只要保证功能正确的情况下重写代码就好了。 我们看下编辑器的弃用代码警告: 目前有 5 个警告,主要集中在示例 7 和把中。我们一项一项解决。 先看示例七的代码:

Unity Editor扩展编辑器中显示脚本属性

吃可爱长大的小学妹 提交于 2020-04-13 18:26:56
【今日推荐】:为什么一到面试就懵逼!>>> 目录 Unity Editor扩展编辑器中显示脚本属性 背景 实现效果 总体结构 代码 Unity Editor扩展编辑器中显示脚本属性 背景 近期需要完成一个扩展编辑器中的功能,即在Scene视图中任意选择某GameObject,然后给这个GameObject动态添加指定脚本,难点是需要让脚本的属性也同时暴露出来,让我们可以随时修改其中公共属性,并序列化下来。 实现效果 如上图所示,具体展示的功能就是可以给场景中任意物体附加指定的脚本,并且显示脚本想要序列化的属性。(这里我其实想将指定的脚本也做成可以随时拖动替换的,奈何技术不够,只能先将要拖动的脚本写在代码里。) 总体结构 为了实现这个功能,需要有以下几个脚本: ExposePropertyAttribute.cs:该脚本为特性申明类,注意该脚本不能放到Editor文件夹下 ExposeProperties.cs:该脚本为特性实现类,是这个功能实现的核心脚本,需要放到Editor文件夹下 MyType.cs:任意你需要显示修改属性的类 MyTypeEditor.cs:你要实现扩展编辑器脚本 以上脚本中,也可以清楚地看出后两个脚本是自定义的,核心是实现前两个脚本。 代码 ExposePropertyAttribute.cs using System; [AttributeUsage

Unity Editor扩展编辑器中显示脚本属性

蓝咒 提交于 2020-04-13 17:00:23
【今日推荐】:为什么一到面试就懵逼!>>> 目录 Unity Editor扩展编辑器中显示脚本属性 背景 实现效果 总体结构 代码 Unity Editor扩展编辑器中显示脚本属性 背景 近期需要完成一个扩展编辑器中的功能,即在Scene视图中任意选择某GameObject,然后给这个GameObject动态添加指定脚本,难点是需要让脚本的属性也同时暴露出来,让我们可以随时修改其中公共属性,并序列化下来。 实现效果 如上图所示,具体展示的功能就是可以给场景中任意物体附加指定的脚本,并且显示脚本想要序列化的属性。(这里我其实想将指定的脚本也做成可以随时拖动替换的,奈何技术不够,只能先将要拖动的脚本写在代码里。) 总体结构 为了实现这个功能,需要有以下几个脚本: ExposePropertyAttribute.cs:该脚本为特性申明类,注意该脚本不能放到Editor文件夹下 ExposeProperties.cs:该脚本为特性实现类,是这个功能实现的核心脚本,需要放到Editor文件夹下 MyType.cs:任意你需要显示修改属性的类 MyTypeEditor.cs:你要实现扩展编辑器脚本 以上脚本中,也可以清楚地看出后两个脚本是自定义的,核心是实现前两个脚本。 代码 ExposePropertyAttribute.cs using System; [AttributeUsage

Unity 游戏框架搭建 2019 (二十六) 第一轮整理完结

僤鯓⒐⒋嵵緔 提交于 2020-04-12 14:10:02
昨天呢我们把第八个示例整理完了。整理之后学习了类的第一作用:方法的集合,还有 Obselete 这个 API。并且在进行整理的时候贯彻了我们新的约定和规则:先确保功能有效,再去做变更和删除。 今天我们在往下接着整理第九个示例 第九个示例 using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace QFramework { public class ResolutionCheck { #if UNITY_EDITOR [MenuItem("QFramework/9.屏幕宽高比判断")] #endif private static void MenuClicked() { Debug.Log(IsPadResolution() ? "是 Pad 分辨率" : "不是 Pad 分辨率"); Debug.Log(IsPhoneResolution() ? "是 Phone 分辨率" : "不是 Phone 分辨率"); Debug.Log(IsiPhoneXResolution() ? "是 iPhone X 分辨率" : "不是 iPhone X 分辨率"); } /// <summary> /// 获取屏幕宽高比 /// </summary> /// <returns></returns> public

Unity 游戏框架搭建 2019 (十八~二十) 概率函数 & GameObject 显示、隐藏简化 & 第二章 小结与快速复习

孤街醉人 提交于 2020-04-06 15:00:35
在笔者刚做项目的时候,遇到了一个需求。第一个项目是一个跑酷游戏,而跑酷游戏是需要一条一条跑道拼接成的。每个跑道的长度是固定的,而怪物的出现位置也是在跑道上固定好的。那么怪物出现的概率决定一部分关卡的难度。 以上有点绕,其实就是,到某一个时刻,怪物是否要出现。而是否要出现是根据概率来决定的。如果一个怪物出现的概率是 100%,那么每次到达跑道固定的位置时候都要生成怪物。如果是 80% 那么就有百分之二十的几率不生成怪物。 那么如何去写这个逻辑呢? 我们先分析一下,我们要输入的是一个概率,而得出的结果呢,是是否要生成怪物。所以我们可以确定下来返回值呢,是一个 bool 值,而输入值呢是一个数字。 而概率用百分比表示相比用 0 ~ 1的概率值表示更容易被理解。而整数的计算比 float 的计算性能更好,所以要输入的是一个 0 到 100 区间内的 int 类型。 到这里呢一个方法的输入输出,我们就这样搞定了。 代码如下: public static bool Percent(int percent) { } 到这里,要用到一个随机数生成的 API。UnityEngine.Random.Range(int min,int max)。 完整的逻辑实现如下: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine;