第一个Unity3D脚本
学习就该简单粗暴,看了一天Unity3d的教程加文档,尝试一个小练习,再快速写个博客加深印象。
一:首先建立一个空白工程,创建一个空GameObject,在Assets Pannel中创建一个名为LevelScript的c#文件,构建一个inspector属性相关的类。
LevelScript.cs内容如下:
using UnityEngine;
using System.Collections; public class LevelScript : MonoBehaviour { public int experience; public int Level
{
get{return experience/;}
}
}
第二行创建了一个属性类,该类继承自MonoBehaviour基类,属性类中包含了一个名为experience的属性,和一个名为Level的方法。
在LevelScript类初始化的时候会生成一个名为experience的属性变量吧,这是我初步的认识。
二:再在Assets文件夹下创建一个Editor文件夹,在Editor文件夹中创建一个名为LevelScriptEditor的c#文件,内容如下:
using UnityEngine;
using System.Collections;
using UnityEditor; [CustomEditor(typeof(LevelScript))]
public class LevelScriptEditor : Editor {
public override void OnInspectorGUI(){
LevelScript myLevelScript = (LevelScript)target;
myLevelScript.experience = EditorGUILayout.IntField ("Experience", myLevelScript.experience);
EditorGUILayout.LabelField("Level",(myLevelScript.Level.ToString()));
}
}
第五行声明这是一个对象类型为LevelScript的自定义的编辑器。
第六行定义一个名为LevelScriptEditor的编辑器类,该编辑器类的对象类型为LevelScript。
Editor基类绘制图形面板是用EditorGUILayout类来实现的。
需要注意的是:
CustomEditor 即自定义编辑器 描述了用于编辑器实时运行类型的一个编辑器类。 注意:这是一个编辑器类,如果想使用它你需要把它放到工程目录下的Assets/Editor文件夹下。编辑器类在UnityEditor命名空间下。
所以当使用C#脚本时,你需要在脚本前面加上 "using UnityEditor"引用。 当你为一个组件制作一个自定义编辑器时,你需要带上这个属性编辑器类。
第八行开始重新绘制inspector属性面板。第九行声明一个名为myLevelScript的变量
第十行生成一个Experience属性,并将值传递给myLevelScript对象。
第十一行建立一个Label属性,名为Level,显示myLevelScript对象中的Level值。
三:总结一些Unity3D中的常用控件及方法,详细内容得参考开发文档。伪代码如下:
//帮助消息框控件
EditorGUILayout.HelpBox("This is a help box", MessageType.Info); //按钮控件及事件用法
if(GUILayout.Button("Build Object")){
ScriptObject.function();
} //绘制默认属性面板
DrawDefaultInspector(); //勾选控件
EditorGUILayout.Toggle("是否选中", ScriptObject.myBool); //文本输入控件
EditorGUILayout.TextField("输入文本",ScriptObject.myString);
//EditorWindow的事件函数
void OnGUI(){
text = EditorGUILayout.TextField("输入文字:", text);
if (GUILayout.Button("打开通知", GUILayout.Width())){this.ShowNotification(new GUIContent("This is a Notification"));}
if (GUILayout.Button("关闭通知", GUILayout.Width())){this.RemoveNotification();}
if (GUILayout.Button("关闭窗口", GUILayout.Width())){this.Close();}
}
void OnFocus(){Debug.Log("获得焦点时调用一次");}
void OnLostFocus(){Debug.Log("获得焦点时调用一次");}
void OnHierarchyChange(){Debug.Log("Hierarchy视图中的任何对象发生改变时调用一次");}
void OnProjectChange(){Debug.Log("Project视图中的资源发生改变时调用一次");}
void OnInspectorUpdate(){Debug.Log("面板的更新");this.Repaint();}
void OnSelectionChange(){
//处于开启状态,并且在Hierarchy视图中选择某游戏对象时调用
foreach (Transform t in Selection.transforms){Debug.Log("OnSelectionChange" + t.name);}
}
void OnDestroy(){Debug.Log("关闭时调用");}
以上便是Unity3D的第一篇学习笔记。
第一个Unity3D脚本的更多相关文章
- Unity3d 脚本相互调用
unity中三种调用其他脚本函数的方法 第一种,被调用脚本函数为static类型,调用时直接用 脚本名.函数名().很不实用…… 第二种,GameObject.Find("脚本所在物体名& ...
- [转]unity3d 脚本参考-技术文档
unity3d 脚本参考-技术文档 核心提示:一.脚本概览这是一个关于Unity内部脚本如何工作的简单概览.Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的.在脚本对象内部不同志的函数被 ...
- Unity3D脚本调用Objective C代码实现游戏内购买
0.开篇吐槽: 一年之内从WP转到iOS,又从iOS转到U3D,真心伤不起. 1.Unity3D脚本调用OC代码的原理: 其实也没啥神秘的,因为OC是和C互通的 ,C#又可以通过DllImport的形 ...
- Unity3D脚本语言UnityScript初探
译者注: Unity3D中支持三种语言:JavaScript.C#.Boo,很多人不知道如何选择,通过这篇译文,我们可以搞清楚这三者语言的来龙去脉,对选择主语言有一定的借鉴意义. 首先,Unity是基 ...
- Unity3D脚本中文系列教程(十六)
Unity3D脚本中文系列教程(十五) ◆ function OnPostprocessAudio (clip:AudioClip):void 描述:◆ function OnPostprocess ...
- Unity3D脚本中文系列教程(十五)
http://dong2008hong.blog.163.com/blog/static/4696882720140322449780/ Unity3D脚本中文系列教程(十四) ◆ LightRend ...
- Unity3D脚本中文系列教程(十四)
http://dong2008hong.blog.163.com/blog/static/469688272014032134394/ WWWFrom 类Unity3D脚本中文系列教程(十三)辅助类. ...
- Unity3D脚本中文系列教程(十三)
http://dong2008hong.blog.163.com/blog/static/469688272014032334486/ Unity3D脚本中文系列教程(十二) ◆ function G ...
- Unity3D脚本中文系列教程(十)
http://dong2008hong.blog.163.com/blog/static/4696882720140312627682/?suggestedreading&wumii Unit ...
随机推荐
- python学习:数据类型
python有两种索引方式.一种从左至右,下标从0开始:一种从右至左,下标从-1开始. python有六种数据类型: 不可变数据(四个):Number(数字).String(字符串).Tuple(元组 ...
- Angular/Vue调用百度地图+标注点不显示图标+多标注点计算地图中心位置
整理一下~ 一.在vue中调用百度地图 首先当然是申请百度密匙(很简单,不多说) 1.在index.html文件中引入百度地图JavaScript API接口: <script type=& ...
- 完美解决xhost +报错: unable to open display "" 装oracle的时候总是在弹出安装界面的时候出错
详细很多朋友在装oracle的时候总是在弹出安装界面的时候出错,界面就是蹦不出来. oracle安装 先切换到root用户,执行xhost + 然后再切换到oracle用户,执行export DISP ...
- 配置Beyond Compare作为比较和合并工具
配置方法 建议配置在~/.gitconfig中. Linux下 [diff] tool = bc3[difftool] prompt = false[merge] tool = bc ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer 一.前言 关于第一节的 ...
- Android动画-View动画
View动画 Android动画分为三类:View动画,帧动画,和属性动画.帧动画也是View动画的一种. View动画的作用对象是View,之所以强调这一点是因为其作用对象有别于Android的另一 ...
- vs2017如何设置类或函数前不显示引用的数量
这几天,从vs2013换成vs2017,17版本增加了一个类或函数前提示引用的数量,这个感觉很别扭,如何取消显示这个呢? 问题如下: 取消显示这个引用的步骤: 找到菜单栏: 工具 ---> 选项 ...
- PHP+ffmpeg+nginx的配置实现视频转码
最近项目中需要实现上传视频过程中自动转码MP4格式的功能,想到了用FFmpeg来实现它,但从来没有操作过,查阅了很多资料,遇到了好多问题,现在终于安装成功,觉得应该写下来与人分享一下,以免有人遇到和我 ...
- C#Mvc地址栏传值
A页面 location.href = "/Home/Bpage?names=" +names; B页面 var loc = location.href;var n1 = loc. ...
- java集合之List。
实际上有两种List:一种是基本的ArrayList其优点在于随机访问元素,另一种是更强大的LinkedList它并不是为快速随机访问设计的,而是具有一套更通用的方法. List:次序是List最重要 ...