Unity3D 脚本中的“this”关键字(c# 脚本、JavaScript)

2024-02-15

我很困惑的是:

代码(CS01.cs)

该脚本附加到一个简单的 Cube 对象。

using UnityEngine;
using System.Collections;

public class CS01 : MonoBehaviour {

    // Use this for initialization
    void Start () {
        Debug.Log (this); //--> Cube(CS01)
        Debug.Log (this.GetType()); //--> CS01
        Debug.Log (this.GetType() == typeof(UnityEngine.GameObject)); //--> False
        Debug.Log (this == gameObject); //--> False
        Debug.Log (this.name); //--> Cube
        Debug.Log (gameObject.name); //--> Cube
        this.name = "Hello"; // --> Will get the gameObject's name changed to 'Hello'
        Debug.Log (gameObject.name); //--> Hello
    }

    // Update is called once per frame
    void Update () {

    }
}

1> 意志CS01是一个脚本对象吗?

DOC:Unity 内部的脚本包括附加自定义脚本 游戏对象称为行为的对象。

2> 在Component对象,像变换,渲染器,刚体这样的变量被引用到的组件gameObject this Component附于.所以在剧本中,this.renderer.material.color = Color.red;相当于this.gameObject.renderer.material.color = Color.red。然而,变量的描述name在文件中name: The name of the object.只告诉它是对象的名称。
3> 那么,如何理解上面的代码呢?是否变量name还返回name该脚本附加到的游戏对象的?
4> this表示脚本对象,而不是脚本附加的游戏对象,对吗?


如果您附加CS01到场景中的一个游戏对象,并且该游戏对象将被加载,您将拥有每个游戏对象的一个​​实例。施工期间CS01 before Awake and OnEnable被称为,所有属性如gameObject, tranform, name等被初始化。如果它们引用一个对象,它们中的大多数将获得对父级属性的引用。

string类在 C# 或 java 中有些特殊,其行为类似于struct- 这将是某种复制的。详细地:CS01.name(继承自Unity.Object) 将获取游戏对象的名称。只要它们具有相同的名称,两个变量就指向内存中的同一位置。当您更改 CS01 的名称时,会出现一个新的string实例将在内部创建,并使用您分配给它的文本进行初始化。因此游戏对象的原始即名称属性将保持不变。

  1. Yes
  2. 大多数组件都有引用的属性GameObject属性,快捷方式类型
  3. 就像2中那样。name是在基类中定义的Object. GameObject and MonoBehaviour两者都源自Unity.Object.
  4. 确切地说,这就是您在代码中编写的类
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity3D 脚本中的“this”关键字(c# 脚本、JavaScript) 的相关文章

  • 未找到 void com.unity3d.player.UnityPlayer.nativeRestartActivityIndi​​cator() 的实现

    我是 Unity 新手 我正在尝试将 Unity 游戏 它有 ARcore 集成到本机 Android 应用程序中 我可以在新的 HelloWorld 应用程序中启动 unity 但无法在我的真实应用程序 具有其他模块 中启动 注意 当我从
  • 检测用户是否正在从另一个应用程序播放音乐

    我的游戏有游戏内配乐 如果用户通过 Android 或 iOS 上的媒体应用程序播放自己的音乐 我想暂停音乐 有没有一种方法可以足够有效地在 update 函数中运行 提前致谢 您可以检查音乐是否按照以下描述播放this https sta
  • 将对象实例替换为 C# 中的另一个对象实例

    在这个问题中 我想知道这是否以及如何可能 这种技术看起来非常糟糕 但似乎我正在使用的 API UnityEditor 正在做类似的事情 我只是好奇 如果对同一个对象有多个引用 是否可以将一个新对象实例化到同一个内存槽中 以便所有先前的引用都
  • Unity fps 旋转相机

    在我的游戏中 我有一个摄像头 我希望将 FPS 之类的旋转附加到该摄像头上 因此 如果我将光标向左移动 我希望凸轮向左旋转 如果我向上移动光标 那么凸轮应该向上看 等等 我目前已经部分工作 我可以左看 右看 上看 下看 当我向下看然后左右移
  • Newtonsoft.Json 可在 Unity 编辑器中运行,但无法在移动设备上运行

    我正在 Unity 中编写一个按类别提问和回答的游戏 类别是通过返回 JSON 文本的 PHP 脚本获取的 当我在 UnityEditor 中使用此解决方案时 它可以正常工作 但是当我在移动设备上安装 apk 时 反序列化不起作用 与 my
  • Unity3D 与 UIView 集成

    如果这个问题重复 请纠正我 我刚刚接触到Unity3D 我只是想问是否可以将Unity3D集成到其他UIView之上 我认为这是不可能的 因为生成的 AppController mm 充当UIApplicationDelegate 即使你设
  • Unity 协程在后台停止

    我的问题如下 目前我在 Android iOS 游戏中运行了几个协程 但是当我将游戏发送到后台以便用手机尝试其他操作时 这些协程会停止 只有在我返回游戏后才恢复 有什么办法可以让协程在游戏在后台时继续运行吗 Android 将按设计暂停您的
  • 2D 弹跳公式无法正常工作

    我是 Unity 的新手 我正在尝试创建一个弹跳球 所以我做了很多关于弹跳相关物理的研究 我找到了一个公式 Formula 2 V dot N N V 其中 V 是速度矢量 N 是球弹跳表面的法线 这是我的脚本 using UnityEng
  • 在代码中添加一个定时器,然后循环它

    尝试找到一种方法将计时器添加到我的代码中 然后用计时器不断循环它 例如 尝试通过单击按钮来制作物品 然后等待 5 秒以使其制作 然后只要我有材料 它就会自动开始再次制作 依此类推 我环顾四周的教程 但未能找到我一直在寻找的东西 这是我想要循
  • 如何使弹丸转弯时带有弧线

    我有一门大炮 可以以抛物线弧线发射子弹 现在 当我发射子弹时 子弹的旋转速度与从大炮中发射时的旋转速度相同 如何使子弹在空气中飞行时沿着弧线旋转 我尝试了以下作为在项目符号上运行的脚本 附件1 public class PointingBe
  • 如何让Visual Studio推荐unity代码

    我一直在学习 C 和 Unity 但我遇到的一个问题是 在 Visual Studio 上编写 C 脚本时 VS 似乎总是推荐对 Unity 无用的脚本 一个例子是当我输入Vector3 它会推荐BitVector32 你不能忽略它们 就好
  • 快速移动的球与鼠标控制的球拍的碰撞检测问题

    在统一中 我有一个应该击球的球拍 并且球拍直接由鼠标控制 即鼠标使用鼠标轴移动球棒并使用 translate 函数移动球拍 我预计 Unity3d 的物理特性不会直接通过鼠标正确地转换球拍的运动并相应地影响球 我必须编写一些自定义的内容 结
  • 我无法在 Unity Hub 中激活许可证

    我重新安装了视窗 10 我从官方网站下载了 Unity Hub 运行 unity hub 我看到错误 您没有有效的许可证 错误上有 2 个按钮 管理许可证 和 关闭 我单击 管理许可证 进入 Unity 中心设置中的 许可证管理 页面 单击
  • 如何在Unity中使用MediaCapture类访问相机预览帧?

    我正在尝试在 Unity 应用程序的脚本中访问 Hololens 的相机预览帧 但遇到一些问题 我想使用 MediaCapture 类访问相机预览 我知道它可以在 UWP 应用程序中实现 但我想在 Unity 中实现 在 UWP 应用程序中
  • 如何在Unity中集成xAPI / TinCan

    我是 xAPI TinCan API 的新手 所以我的问题可能有点笼统 但到目前为止我还没有找到任何可以帮助我的东西 我认为可以将 xAPI 集成到 Unity 项目 游戏或模拟 中 但我到底该怎么做呢 我可以阅读有关 xAPI 和 Uni
  • 在无头模式下独立运行 Unity,同时捕获屏幕截图

    我需要创建一个在无头模式下运行的统一项目 使用 batchmode 命令 但它必须捕获屏幕截图 例如每一秒并将它们写到一个文件中 我知道在无头模式下 您需要强制调用 Camera Render 才能渲染任何内容 在捕获第一个屏幕截图后 时间
  • 由于对象的当前状态,操作无效 - Linq on List

    对列表运行 Linq 查询时会引发此错误 我使用 Unity3D 3 0 和 C Unity3D 使用 Mono 2 6 据我所知 Unity3D是单线程的 它的工作原理是将继承基类的 脚本 c cs 文件 附加到 GameObject 此
  • 获取单位圆上 (0, 0) 处的随机点

    我正在使用 Unity 和 C 并且想编写一个函数 以 0 0 单位圆上随机点的 Vector2 形式返回 x 和 y 坐标 好像有一个功能UnityEngine Random insideUnitCircle 得到单位圆内的随机点 有Un
  • float.Parse 不再在 Unity 中工作 (C#)

    我有一个包含以下代码行的工作项目 public InputField mass float val float Parse mass text 非常简单 用户输入一定量的质量 然后将其从文本解析为浮动 几天前这工作得很好 我什至能够多次导出
  • Unity,c++ 本机插件字节数组不匹配

    在我的 C 本机插件中 我有一个调用 vector

随机推荐