问题标签 [scriptable-object]
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.
c# - unity Scriptable 对象在 bulid 中不起作用
嗨,我是 Unity 和 C# 的新手,我正在制作我的第一款游戏。在其中我有一个名为“sss”的脚本对象。它包含硬币、速度、跳跃力等值。它在编辑器中工作正常,但在我构建它之后它就不起作用了。我的意思是它不起作用是玩家在游戏中死后取决于他们的寿命,他们去商店时会得到一定数量的硬币他们会看到这些硬币显示为 UI,他们可以将它们用于速度和跳跃提升等方面。这在编辑器中有效,但在构建中无效。有人知道这是为什么吗?这是我的 Scriptable 对象中的代码
}
这是我用来显示硬币浮动的代码
这是用于购买东西的整个商店经理脚本
c# - 如何将可编写脚本的对象的每个实例添加到集合中?
你好 :)
我希望将可编写脚本的对象类的每一个实例添加到 HashSet(它位于单独脚本中的静态类中)。
我通过创建一个将所述类添加到哈希集中的方法来做到这一点,并在我正在实例化的类的构造函数中调用了这个方法。事情是这样的……它有效,但并非总是如此?这是代码,我将在最后进一步探讨问题:
除了我第一次打开 Unity 之外,这一切都很好。第一次我总是必须进入我的“MyClassToInstantiate”的任何实例并改变一些东西(任何东西),它才开始工作(我正在使用 [createAssetMenu] 属性顺便说一句)。
附言。我敢肯定我没有看到明显的理论问题!提前感谢任何让我了解正在发生的事情的人
json - JsonUtility.FromJsonOverwrite 错误统一
嗨,我在统一中使用了一个脚本对象,它在我的游戏中保存了商店的数据,它现在已经工作了一段时间了,但是当我今天在更新统一集线器后打开统一时,我的代码中出现了这个错误
ArgumentException:JSON 解析错误:文档为空。UnityEngine.JsonUtility.FromJsonOverwrite (System.String json, System.Object objectToOverwrite) (在 <1386288601af43018501cce2912f52f4>:0)
它在我在 ScriptableObjec 对象代码中引用 LoadDataFromFile 函数的任何地方都出现了错误。错误出现在我的代码的第 50 行。感谢您的时间
这是 ScriptableObjects 代码
c# - 用 Firebase 替换 ScriptableObject
我正在制作一个多人问答游戏,我使用 Scriptableobject 来存储我的问答数据。现在我想改变它并使用 Firebase,但我碰壁了。
我有一个可编写脚本的对象来存储我的问题:代码(CSharp):
以及用于处理该问题的 Gamemanager 脚本:
我也在使用类别管理:代码(CSharp):
我已经建立了与 DB 的连接 - 我可以添加新问题,但显示它们时遇到问题。有什么办法可以直接替换 ScriptableObject?我尝试使用 JsonUtility.From.JsonOverwritte 但我不能使用 JSON 和列表...我认为这很容易但经过这么长时间的处理后,我现在根本看不到正确的方法(顺便说一句,我可以使用这还会在 SO 中创建新问题吗?我在任何地方都找不到此信息)
谢谢
c# - 作为 ScriptableObject 的鼠标管理器是否可行?
我正试图围绕 ScriptableObjects 及其可能性。我的目标是有一个鼠标管理器来跟踪鼠标位置、它悬停的对象和其他行为。我希望这位经理在任何想知道的时候都能被任何想知道的人阅读。
我知道我可以制作一个具有不断更新的 ScriptableObject 变量(如 Vector3)的 MonoBehavior 脚本,但这需要我手动将管理器添加到每个场景。然后我需要将每个变量作为引用包含到需要读取它的任何其他资产中。
有一个更好的方法吗?将管理器作为一个 ScriptableObject,每个属性也是一个 ScriptableObject,并且只在需要访问它的任何脚本中引用管理器?
unity3d - Unity Scriptable Objects 问题
我在 RoomSO 中有一个列表,其中包含我在编辑器中创建并拖放到列表中的预制 ButtonSO。RoomSO 也是预制的(在编辑器中制作)然后在运行时我创建了一个 ButtonSO 的实例并尝试将其添加到 RoomSO 按钮。我在编辑器中查看 RoomSO,我得到“类型不匹配”。我不明白为什么?
RoomSO 脚本:
我的 ButtonSO 脚本:
c# - 寻找比在 Scriptable Objects 中使用字符串在别处调用特定方法更好的解决方案
我被要求在我的问题的先前版本中描述我的用例。因此,这篇文章非常详细,并详细介绍了我正在尝试做的事情。如果您遇到这个问题,希望它能帮助您解决自己的问题,这里有一个快速的 TL:DR,看看是否值得进一步研究:
TL:DR:我在我的项目中使用可编写脚本的对象,并希望找到将脚本附加到这些对象的最佳方法。我使用字符串在其他地方调用方法的想法是可能的,但被认为昂贵且容易出错。如果您想阅读为什么它被认为是这样,这里是我原来的问题的链接。
完整的问题
我目前正在创建自己的纸牌游戏(单人游戏,所以我不需要担心多人游戏或服务器的东西)。我创建了一个可编写脚本的对象 (CardAsset) 来处理我所有填充的卡片都需要的一些字段。像这样的东西:
- 卡名(字符串)
- 成本(整数)
- 图像(图像)
- 描述文本(字符串)
现在我的原型的所有其他东西都完成了(比赛场地、套牌、我可以实例化从我的 CardAsset 填充的卡片等),我需要开始为我的卡片实际制作效果并对其进行编程。
由于每张卡都不同,但有些效果是相同的(例如,“抽更多卡”和“对角色造成伤害”很常见),我想我可以通过将可编写脚本的对象 CardAsset 更改为节省大量时间包括一些基本的脚本和变量:
卡名(字符串)
成本(整数)
图像(图像)
描述文本(字符串)
效果1(脚本)
Effect1Amount (int)
效果2(脚本)
Effect2Amount (int)
效果3(脚本)
Effect3Amount (int)
这样,我可以创建最多具有 3 种效果的 CardAssets(例如“对角色造成 X 伤害”或“绘制 Y 牌”),然后在我的游戏中使用一些东西来调用这些带有相关变量的脚本玩家打出该卡(将任何不需要的插槽保留为空)。虽然任何真正独特的卡都可能需要它自己的脚本,但我认为这会大大缩短时间(而不是单独编程每张卡)。
我的问题是我无法将脚本附加到我的 CardAsset,所以我想一个合适的解决方法是让我在 CardAsset 上的 Effect1/Effect2/Effect3 插槽中输入方法的名称(DealDamage、DrawCards)(将它们更改为一个字符串),然后让一些东西读取它们并在其他地方调用相关的方法。
我知道这个解决方案容易出错并且维护/更改可能会很痛苦,那么在这个特定项目中我可以有更好的方法吗?不幸的是,作为初学者,我目前缺乏元语言来轻松找到此问题的解决方案,因此任何指针都是最有益的。我很乐意自己做更多的研究,我只需要指出正确的方向。
c# - 如何在运行时正确使用可编写脚本的对象来创建项目?
在游戏开发方面,我相对较新,但我花了十几个小时研究如何使用可编写脚本的对象 (SO)。
我不知道我的游戏会有多少物品,所以我想尽可能地自动化物品制作过程以避免人为错误。我已经读过使用 Scriptable Objects 将信息存储在一个地方对性能有好处:
项目数据.cs
接下来,我有一个将所有 itemData 加载到 Awake 字典中的 gameObject:
项目数据库.cs
最后,我有一个在运行时创建指定 itemID 的游戏对象的函数:
问题:
- 如上面的 SpawnItem 所示,在运行时创建项目是否被认为是“hacky”?我是否必须手动将每个项目创建为预制件?
- 如果使用“资源”被认为是不好的做法,除了手动将每个项目拖到 ItemDatabase 脚本上之外,还有更好的解决方案吗?
unity3d - NullReferenceException 在 Unity 中使用 ScriptableObjects
我在名为“Card”的数据库中设置了一个 Scriptableobject,并试图在 Scriptableobject 中创建这些项目的可搜索列表。我将 CardDatabase 脚本附加到一个名为 _CardDatabase 的空游戏对象。我不确定我是否错误地附加了它或者我在这里做错了什么。
我仍然收到以下错误:
NullReferenceException:对象引用未设置为对象 CardDatabase.GetCardByID (System.String abbr) 的实例(在 Assets/Scripts/CardDatabase.cs:33)
// CardDatabase.cs
// CardList.cs
c# - Unity:Singleton ScriptableObjects 在播放后重置
我有一个单例类,其中包含有关我的游戏的一般信息。
此类在场景中没有礼物。
我还有一个窗口可以显示和更改它
问题是在我点击播放或重新启动统一后它不会保存我的更改。有什么解决办法??