热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

unity3d自动变化大小_Unity3D效率优化:自动创建脚本并绑定变量(一)

在开发过程中,经常会声明很多很多的变量,就像下面一样各种各样的类型和变量然后在去面板上一个一个去拖上去赋值,开发过程中就伴随着新变量添加然后拖上去&#x

在开发过程中,经常会声明很多很多的变量,就像下面一样各种各样的类型和变量

然后在去面板上一个一个去拖上去赋值,开发过程中就伴随着新变量添加然后拖上去,会不经意间浪费很多时间,那么下面为大家介绍一种自动根据物体创建脚本并自动生成所需要的代码,并全自动的帮你把变量都添加的面板上,怎么样?是不是很棒!

0x 00不同的物体被安排的明明白白

一般我们会将我们需要子物体按照类型来命名,那我们就根据这个来生成代码,这样做的话物体的结构也会变得很清晰,同时也很方便我们来构建代码。那我们就可以把这一部分需求提取出来。

首先我们在任意一个Editor文件夹下创建一个脚本,并添加一个Dictionary,这个Dictionary的key就是物体命名时约定的前缀,value就是变量的类型还可以根据需要来添加更多

在添加一个函数,能够让我们在工具栏上使用

首先需要获取到目标物体,然后自动化构建代码,我创建了两个脚本,他们都是用partial 修饰的class,这样做的好处就是,一个脚本专门用于代码自动生成,另一个则负责自己的业务,这样两不冲突。

下面我们来观察一下变量都哪些组成

一条这样的语句 包含了变量名,变量类型,同时为了之后自动绑定物体,还需要物体的名字和相对于当前物体的一个路径,我就创建了一个AttrInfo类来保存这些信息

那上面GetAttrInfosInGameObject()这个方法就是来获得目标物体下面满足条件的自物体,并把所需要的信息提取出来

0x 01

所需要的变量相关信息已经全部拿到了,那下面我们就可以很方便的来创建脚本了,说是自动化构建脚本,就是也就是写文件。先创建一个和目标物体名称相同的Mono脚本在创建另一个——AutoBind.cs脚本

这样两个脚本都创建好了

0x 02

代码创建好了,下面就需要自动添加到物体上面,这一步比较简单,但是不能生成好代码立即用AddComponent的方式来添加组件,我们必须要等脚本加载完成之后在添加。

EditorPrefes就大致相当于PlayerPrefs,只不过PlayerPrefs用于保存玩家信息,EditorPrefes用于保存Editor的信息[DidReloadScripts]当脚本发生改动后调用

首先通过通过命名空间获得到Type,然后挂到这个物体上,下面就开始绑定变量

所有变量被正确的赋值了

大功告成!但是依旧还有一个问题,如果一个物体即是Button又是Image我们这个方法就不支持了,但是这一种方法就能解决很多情况下的了,以后我将会带来另一种新的方式来解决这个问题 。

项目Github地址之后加上:https://github.com/tkonexhh/Qarth/tree/master/Extensions/Tools/CreateScript​github.com



推荐阅读
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
author-avatar
mobiledu2502853787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有