【Unity3D】脚本中 #pragma
在一些Unity脚本的开始经常可以看到#pragma strict,#pragma downcast、#pragma implicit指令。
而有的Unity脚本则没有这些指令,那这些指令有什么作用呢?
1.#pragma strict,此指令的含义是强制输入,也就是我们在声明变量时,需要精确的声明变量是什么类
型,而不是让编译器来自己推测变量的类型,因此,也不能随便的使用一个随机的名称并让编译器来为
你实例化此变量。例如,在使用此指令后,我们随意声明一个变量:
private var bobby; //是不可以的 //而需要这样: private var bobby : GameObject;//这个可以
通过使用#pragma strict,可以强制我们养成良好的编程习惯,但这在Unity中也不是必须要这样做。
2.#pragma downcast和#pragma implicit指令,则是可以与#pragma strict指令搭配使用,从而做到
“严中有松”,真是有点意思。先看#pragma implicit指令,它的意思是在使用#pragma strict指令,搭配此指令又可以含蓄的声明变量,
例如:
#pragma strict foo = 5; // 不可以 #pragma strict var foo = 5; //可以 #pragma strict #pragma implicit foo = 5; // 通过使用#pragma implicit,此句是可以的。
3.#pragma downcast语句则允许在使用#pragma strict指令时,使变量可以从super(父类型)到sub(子)类型的转换,
例如:
#pragma strict var go : GameObject; var clone : GameObject = Instantiate(go); //此语句是不可以的,因为Instantiate后返回 //的物体类型是Object,而不是GameObject #pragma strict #pragma downcast var go : GameObject; var clone : GameObject = Instantiate(go); //此语句是可以的,使用了#pragma downcast //下面的语句也是可以的: #pragma strict var go : GameObject; var clone : GameObject = Instantiate(go) as GameObject; //此语句也是可以的,因为使用了类型转换as。
相关推荐
Unity3D脚本:JS对象脚本是Unity3D游戏引擎中的一种脚本类型,使用JavaScript语言编写,用于实现游戏逻辑和交互。以下是 Unity3D脚本:JS对象脚本的详细知识点: JS对象脚本基础 在Unity3D中,JS对象脚本是一种...
在Unity3D中,脚本是游戏逻辑和交互的核心部分,用于控制游戏对象的行为。这个特定的脚本是一个用户自定义的密码管理器,允许用户注册和登录。下面我们将深入探讨这个脚本的关键知识点。 首先,我们看到脚本使用了`...
在Unity3D中,编写脚本是实现游戏逻辑和交互的关键部分,本教程主要涉及C#和Boo语言的脚本初级知识。 首先,所有行为脚本在Unity中都必须从`MonoBehaviour`类继承,这是为了确保脚本能与Unity的生命周期方法协同...
Unity3D 性能优化技巧 Unity3D 作为一款功能强大的游戏引擎,性能优化是非常重要的。下面将总结一些 Unity3D 的性能优化技巧。 1. 使用静态类型化 在 Unity 中,我们可以使用静态类型化(Static Typing)来代替...
在Unity 3D开发环境中,有时我们可能需要在C#脚本和JavaScript脚本之间进行交互,例如在C#中触发JavaScript函数或者反之。要实现这种互调用,需要了解Unity的编译过程以及特定的目录结构规则。下面将详细讨论如何在...
接下来,我们需要在Unity3D中编写JavaScript(Unity3D早期版本使用JavaScript作为脚本语言)来与服务器进行交互。以下是一个简单的脚本示例: ```javascript #pragma strict private var secretKey = "hashcode"; ...
在Unity3D游戏开发中,有时我们需要对场景中具有相同标签(Tag)的多个游戏对象进行统一的操作,例如批量隐藏或显示。这个场景通常出现在需要批量控制同类游戏对象的行为时,比如控制所有敌人同时移动、所有道具同时...
在Unity3D中,Shader是一种用于渲染物体表面材质的脚本语言,它可以帮助开发者控制光照、纹理等效果,从而实现更加真实或具有创意的画面表现。Shader在Unity中的编写环境称为Shader Lab,支持多种编程语言如CgFX和...
要实现Unity中的CGShader错切变换,你需要创建一个Shader脚本,并在其中定义一个或多个CGProgram块。在CGProgram块中,你可以编写Cg代码来构建错切变换矩阵,并将其应用于顶点坐标。以下是一个简单的例子: ```cpp ...
在Unity3D中,Shader脚本通常以`CGPROGRAM`开始,`ENDCG`结束,这之间定义了Shader的语言部分,这里使用的是基于C的着色语言HLSL。Shader "Rim" 是Shader的名称,Properties部分定义了可以供我们在Unity编辑器中调整...
在IT行业中,跨平台开发是常见需求,尤其是游戏开发领域,Unity引擎因其强大的3D图形渲染能力和广泛的平台支持而备受青睐。本项目专注于探讨如何利用Unity调用安卓系统的通话记录和通讯录功能,以实现更丰富的用户...
本主题聚焦于如何使用Shader来改变Unity中的Plane(平面)对象的材质颜色。 在Unity引擎中,Plane是预设的二维平面对象,常被用作测试或基础构建块。我们可以为Plane添加材质(Material),而材质决定了其表面的...
在"GPUInstance.zip"的压缩包中,很可能包含了Unity工程示例、C#脚本、着色器文件以及相关的说明文档。通过学习和分析这些内容,开发者可以深入了解GPU实例化和Property Block的工作原理,并将其应用到自己的项目中...
- **MonoBehavior**:Unity 中所有脚本都继承自这个类,它提供了 Update、LateUpdate、FixedUpdate 等生命周期方法。 - **GameObject** 和 **Component**:GameObject 是场景中的实体,Component 是附加到 ...
Unity Shader实现裁切效果是一种在3D场景中对物体进行局部隐藏的技术,它允许开发者根据需求裁掉模型的一部分,以创造出独特的视觉效果。本篇主要介绍如何使用Unity Shader来实现垂直方向上的裁切,即根据物体自身...
在IT行业中,ShaderLab是一种专用于Unity引擎的着色器语言,它允许开发者创建自定义的图形效果。...通过深入分析和学习这个项目,我们可以进一步提升在Unity中使用ShaderLab的能力,创造出更引人入胜的3D场景。
在Unity中,Shader负责处理光照、颜色、纹理等元素,使得游戏中的3D模型看起来更加生动逼真。本篇将深入讲解Shader开发的基础,以及如何理解并使用提供的"RiverShader"代码。 首先,Shader脚本的结构分为多个部分,...