使用Unity3d和C#的一些属性来设置特殊行为
使用 Unity 的C#语言 ,利用属性(Attribute)来类定义和变量定义或区分其他的变量,您可以设置一种特殊行为
例如,您添加[SerializeField]属性变量,私有变量标识序列化。
[SerializeField]
int 计数;
序列化您'的值是存储到场景和预制体。因为值存储在meta元数据中,在Inspector检查器中设置的值。
你还可以强制指定的组件,对象要被附加组件,您将添加[RequireComponent] * 2 * 3 。
[RequireComponent(typeof(Rigidbody))]
public classAttributeSample : MonoBehaviour {
}
你可以使用属性时,设置特殊的变量命名约定以外的其他行为。unity使用属性,设置特约编辑和方法的行为。
规则属性
属性放置在[below. * * *]的窗体变量和类定义之前。如果你想要设置多个属性,以逗号分隔 [* * * . * * *]的写入操作。
例如,如果您想要设置的 SerializeField 和范围,如描述属性。
[SerializeField, Range(0, 5)]
int count;
属性适用于立即定义的所有变量。例如,如果在一个声明中定义多个变量
[SerializeField, Range(0,5)]
int count3, count4;
以及适合数组,是适用于所有的变量,使其包含。
[SerializeField, Range(0,5)]
int[] counts;
统一标准属性
要扩展Inspector检查器属性
扩展的Inspector检查器行为选择字段。
·SerializeField
private或protected值的序列化。
如果您想要在场景视图中进行编辑,它非常有用。
[SerializeField]
int count;
·TooltipAttribute
如果鼠标光标是在字段上,显示的说明文本。
[SerializeField,TooltipAttribute("説明文")]
int count5;
·SpaceAttribute
设置字段和字段之间的空间。
[SerializeField,Space(15)]
intcount6;
·HeaderAttribute
设置标题,就是字段的头部。需要注意,因为标题给予所有项目和将 HeaderAttribute 添加到列表中
[SerializeField,HeaderAttribute ("Title")]
int count7;
·MultilineAttribute
设置多行输入的文本字段。
[SerializeField, MultilineAttribute(2)]
string message1;
·TextAreaAttribute
设置多行输入的文本字段。您可以设置的最大值和最小值的行数。
[SerializeField,TextAreaAttribute(2, 5)]
string message2;
·HideInInspector
这种public序列化字段从Inspector检查器隐藏。如果隐藏的参数、扩展的编辑器中内置的参数和引用关系。
请注意不能从检查器编辑,HideInInspector 用于构建unity场景隐藏一个序列化的值,当声明一个字段变量初始化也将忽略。
使用NonSerializable的序列化和HideInInspector。
[HideInInspector]
public int count8;
·NonSerializable
序列化并不妨碍您将从检查器中消失。
[System.NonSerialized]
public int count9;
·FormerlySerializedAs
当您更改该变量的名称,保持信息的修改。
unity保持信息字段字段名称中,字段名称被更改和销毁值。当您可以指定FormerlySerializedAs此信息将被带到目标变量的名称。
public float first;
首先,所有的变量first。我试着改变这第二个变量中。并添加 FormerlySerializedAs 属性,原" first "。
[FormerlySerializedAs("first")]
public float second;
即使您更改中的变量名称的值first在此变量的名称second之后,将保留。如果你在其他场景中使用可迁移要删除 FormerlySerializedAs 和各种的麻烦,请注意。
与组件的行为相关联的属性
·RequireComponentAttribute
添加组件的行为附加到对象。例如,刚体等......
[RequireComponent(typeof(Rigidbody))]
public classAttributeSample : MonoBehaviour {
}
·DisallowMultipleComponent
不能将几个组件添加到同一个对象(就是不能重复)。
[DisallowMultipleComponent]
public classAttributeSample : MonoBehaviour {
}
·ContextMenuAttribute
我想要从组件的上下文菜单(单击右键)调用方法。例如,如果您在运行时做不被动设置很有用。
[ContextMenu("Init")]
void Init(){
}
影响游戏的行为的属性
·RPC
在执行 RPC 时,它使用。用于在 NetworkView 中的光子与沟通。此属性是跨网络调用方法。
[RPC]
void Damage(){
}
·ImageEffectTransformsToLDR
似乎转换HDR和 LDR 。如何使用未知。
·ImageEffectOpaque
使 OnRenderImage 透明呈现。
[ImageEffectOpaque]
void OnRenderImage(RenderTexture source, RenderTexture destination){
}
·MonoPInvokeCallbackAttribute
C#(托管代码) 中注册方法可以从c + +(非托管代码) 调用。
·DLLImport
C + +(非托管代码) 的方法可从c#调用。
[DllImport("DLLName")]
private static extern void MethodName();
用编辑器的行为相关联的属性
是可以影响的场景从编辑器的顶部的属性。
·AddComponentMenu
设置路径,当指定 AddComponent 按钮和菜单栏构件。如果你不做你的Script /Namespace 和组件的名称。
[AddComponentMenu("Sample/TestCode")]
public class AttributeSample: MonoBehaviour{
}
·ExecuteInEditMode
状态不玩游戏等组件事件更新并开始工作。用来验证是否要工作在运行时的行为。
[ExecuteInEditMode]
public classAttributeSample : MonoBehaviour {}
ExecuteInEditMode操作热点像代码更改为序列化的形式可以是值是序列化→→汇编和注射,不能破坏价值和可能。正因为如此,注意力是需要,因为需要发挥出来的场景将取决于静态代码或初始化开始等......
例如是前 3 名,代码更改和运行编译下面的代码的代码更改,并打印 0。
static int sCount = 0;
void Start(){
sCount = 3;
}
void Update(){
Debug.Log("export:" + sCount);
}
·SelectionBaseAttribute
选择您选择在场景视图中使用此属性的组件。
[SelectionBase]
public class AttributeSample :MonoBehaviour {}
例如授予的授予对父对象的渲染器模型的SelectionBaseAttribute 选定在场景视图的模型时,选择场景视图组件所选的父对象上,当你选择时。
是到游戏对象的 SelectionBase对象,如果不是根据行为给予的批。格兰特获取未授予一个球体,但游戏物体的对象
使用Unity3d和C#的一些属性来设置特殊行为的更多相关文章
- Unity3d发布成exe项目后的设置(全屏自适应屏幕大小)
原地址:http://blog.sina.com.cn/s/blog_697b1b8c0101gd46.html 1. 去除启动exe项目时出现的画面窗口 File ☞ Build Settings ...
- 配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项
错误提示: 配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项 配置文件 \\?\D:\www\abc\web.config 出现 ...
- 问题.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合
问题现象:.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合 问题处理: 内容摘要: HTTP 错误 500.19 - ...
- 介绍 Visifire 常用属性的设置
转载自http://www.cnblogs.com/xinyus/p/3422198.html 主要介绍 Visifire 常用属性的设置,用来生成不同样式的图例 设置Chart的属 //设置titl ...
- DBGrid 各属性的设置
在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一.但是 DBGrid 缺省的外观未免显得单调和缺乏创意.其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观 ...
- yii2布局选择与属性标签设置
Yii选择布局的方法: 1. 通过控制器成员变量设置: public $layout = false;//不使用布局 public $layout = 'main';//设置使用的布局文件(@app/ ...
- 使用elementUI的时候,使用Upload 上传的时候,使用 list-type 属性来设置文件列表的样式,before-upload方法失效
最近在做项目的时候,使用elementUI的时候,使用Upload 上传的时候,before-upload方法失效. 情况下:使用 list-type 属性来设置文件列表的样式. 最终的优化之后:(演 ...
- 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调
[源码下载] 背水一战 Windows 10 (67) - 控件(控件基类): DependencyObject - CoreDispatcher, 依赖属性的设置与获取, 依赖属性的变化回调 作者: ...
- Python+OpenCV图像处理(二)——打印图片属性、设置图片存储路径、电脑摄像头的调取和显示
一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的Python科学计算库 ...
随机推荐
- L001.PyQt
초보자를 위한 Python GUI 프로그래밍 - PyQt5 https://wikidocs.net/book/2944 https://freeprog.tistory.com/330?cat ...
- sqlserver数据库重启
停止:net stop mssqlserver 重启:net start mssqlserver
- C# WPF Bing地图展示
微信公众号:Dotnet9,网站:Dotnet9,问题或建议,请网站留言: 如果您觉得Dotnet9对您有帮助,欢迎赞赏 内容目录 实现效果 业务场景 编码实现 本文参考 源码下载 1.实现效果 Bi ...
- 同一服务器下发布两个不同网站(war包)的方法(这里采用的是二级域名的方法)
这里是在阿里云服务器的上部署 在本地测试好之后,打包,然后发到服务器上的tomcat的webapp目录上(这个可能会有个bug,先启动下服务器,然后关掉,再启动,那个war包对应的文件才会出来) 这里 ...
- HTML5存储(带一个粗糙的打怪小游戏案例)
本地存储localStorage设置存储内容setItem(key,value) localStorage.setItem('leo','23'); 更新存储内容对象[key]=value对象.key ...
- gulp常用插件之bower使用
更多gulp常用插件使用请访问:gulp常用插件汇总 bower这是一款客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源. 更多使用文档请点击访 ...
- 1级搭建类108-Oracle 11gR2 SI FS(Windows Server 2019)公开
Oracle 11gR2 单实例文件系统在Windows Server 2019上的安装 在线查看
- z3学习档案
Reference: 看雪-z3巧解逆向 知乎:Z3一把梭 z3 solver学习 使用z3约束求解器解决CTF中的题目 Playing with Z3,hacking the serial chec ...
- 【大道至简】NetCore3.1快速开发框架一:集成Swagger
在上一章节中,我们创建了基本的框架结构:https://www.cnblogs.com/fuyu-blog/p/12217647.html 下面我们测试接口和集成Swagger接口文档 一.接口测试 ...
- AcWing 1052. 设计密码
//f[i][j]表示前 i 个字符与字符串匹配长度为 j 时的方案数 #include <cstring> #include <iostream> #include < ...