问题标签 [unity-components]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unity3d - Unity3D. How to construct components programmatically
I'm new to unity and am having a bit of trouble getting my head around the architecture.
Lets say I have a C# script component called 'component A'. I'd like component A to have an array of 100 other components of type 'component B'. How do I construct the 'component B's programmatically with certain values?
Note that 'component B' is derived from 'MonoBehaviour' as it needs to be able to call 'StartCoroutine'
I'm aware that in unity you do not use constructors as you normally would in OO.
c# - 在 AddComponent( 字符串变量 ) 上调用函数
这不起作用,我相信这是因为如果我在编译时(而不是运行)不知道变量类型,我无法转换为变量类型,因此我无法直接访问我刚刚添加的组件。
我有一个 gameItem 类,它从另一个脚本中提取其默认值,然后将它们放入字典中。基于字典条目“functionScript”、“myScript”,我需要将 myScript 附加到对象,然后将一些字典条目传递给它。
或者,我可能真的效率低下,并在 myScript 类中向 item 类询问其变量,我宁愿避免这样做。
variables - 使用 GetComponent 从另一个脚本访问变量
在统一(游戏引擎)中,我有两个脚本
我想访问变量
FROM characterSelect.js IN CarCameraScript.js
该变量当前如下所示:
据我所知,它与 getcomponent 有关。任何帮助,将不胜感激
c# - Unity3D 在另一个脚本中运行一个脚本
这让我发疯了,我已经好几个小时没有运气了。
我想做的就是从另一个脚本运行我的一个脚本。
两个脚本都附加到同一个游戏对象。这是我想用来运行其他脚本的脚本。
这是我的漫游脚本...
这是我得到的错误。
错误 CS1955:成员“RedTeam.wanderScript”不能用作方法或委托
我的主要目标是能够从我的 TeamRed 脚本中启用和禁用 Wander 脚本。
c# - OnGUI 仅在第一个组件中调用
我正在创建一个游戏来了解 Unity 观看教程(这个),我的 Player 有两个组件:PlayerHealth 和 PlayerAttack。两者都工作正常,但问题是当我试图在第二个组件(PlayerAttack)的 OnGUI 中做某事时,PlayerAttack 中的 OnGUI 永远不会被调用。
是因为 PlayerAttack 添加在 PlayerHealth 下面吗?按照下面的代码和一些打印。
PlayerHealth.cs
玩家攻击.cs
c# - unity 碰撞后修改组件属性
我试图在碰撞后修改类组件的属性,但似乎没有设置该属性。
你知道为什么吗?
c# - Unity3d AddComponent 采用变量
详细信息: 在 Unity3d 上的 C# 中搜索了统一文档,但该示例不适合我的情况,对于我访问的其他网站也是如此。(我没有按我应该的方式列出它们。)
我想要做的是传递一个带有构造函数的类变量作为组件:
我想知道我正在尝试的东西是否可行,或者我是否错过了一些东西......
问题:
无论我尝试什么都行不通。C# 并不像 javascript,如果我是对的,我们曾经能够在 js 的 addcomponent 中传递变量。
上下文: 我必须在构造函数中绝对传递它。我有 2 个私有字段,出于安全原因,我不能将其设为静态、常量或公共字段。
选项: 如果答案对我来说太复杂,我可能会进行 get/set 并检查字段是否为空。
c# - 解耦 Unity 中共享数据的组件
我一直在重新设计我在 Unity 中的所有实体,希望它们能够得到更多的调制,并且组件之间的依赖度会降低。但是,我遇到了似乎无法解决的问题。
如果我在一个实体上有两个脚本组件,例如 PlayerInput 和 PlayerState。PlayerInput 将接受输入并以某种有意义的方式使用它,而 PlayerState 将管理玩家的状态。PlayerState 可能包含一些描述玩家所处状态的数据。问题是,如果需要该状态数据来处理输入,那么除了创建依赖项或更改基本游戏对象类(其中我做不到,而且可能无论如何都不是一个好主意。)
当然,发送消息仅对提供信息有用,而不是请求它。我是否应该尝试跨组件共享数据,或者这本身是否意味着依赖?在这种情况下我做错了什么?
unity3d - 带有脚本的 Unity 预制件在子组件中的组件与其他脚本不同
在 Script Foo 中,我实例化了具有 3 个孩子的预制 Bar。从 Script Foo 我更新了 Bar 的 3 个孩子的脚本并设置了他们的变量 X。调试时我可以看到所有这些都正确发生。
脚本 WTF 附加到预制栏。从 Script Foo,我告诉 Script WTF 访问附加到 Bar 的 3 个孩子的脚本,并获得似乎是 3 个从未设置变量 X 的新类。
我刚刚进行了一些测试,并从 Script WTF 中发现:
GetComponentsInChildren<TEST>()
当它应该得到 3 时将返回一个长度为 0 的数组。GetChild(0).getComponent<TEST>()
将返回我正在寻找的脚本,但未设置变量 X。
这一定和克隆有关吧?
c# - 扩展方法中的协程
我编写了一个扩展方法来使对象随时间移动。它运作良好;但是,由于对象在一段时间内执行该任务,它会忽略所有其他调用,例如我的更新方法。我假设我需要用协程做一些事情,但我无法弄清楚它的去向。如何在不阻止其他代码(例如 Update() 方法)同时运行的情况下使以下代码工作?简化版如下:
==================================================== =================================
==================================================== =================================