问题标签 [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# - 从 Scriptable Object 获取所有公共变量
该脚本有效,但相当乏味。因为我必须为 itemDB 中的每个 ItemData[] 变量手动编写一个 for 循环。
问题:有没有更简单的方法来获取 ItemDB ScriptableObject 中的所有变量?
.
c# - 我的 ScriptableObjects 如何拥有对脚本的 SerializeField 引用?
我游戏中的每个敌人都是一个可编写脚本的对象(Enemy1、Enemy2 等)。每个敌人也有自己独特的脚本来确定战斗的进行方式(BattleEvent1、BattleEvent2 等)
我的逻辑目前的工作方式是:
BattleSystem
组件已BattleEvent
附加所有 s。- 战斗开始时,检查
name
current 的Enemy
,并使用该字符串引用来选择BattleEvent
要运行的(很多 if 语句)。
但这很糟糕,因为它都是字符串引用,所以我不能轻易确保每个敌人都有一个BattleEvent
,并且有很多 if/else 语句。
我想做的是将每个BattleEvent
脚本附加到其各自的Enemy
Scriptable Object 上。
但是我无法将那个战斗事件 SerializeField 中的脚本拖到那里。
理想情况下,我希望我的逻辑可以像这样工作:
BattleSystem
加载敌人,然后检查Enemy.BattleEvent
以加载正确的脚本。
由于我无法将脚本附加到 SO,因此我无法使其正常工作。有什么办法可以实现这样的逻辑流程?
unity3d - 使用 Unity Visual Scripting(在编辑器中工作)时,无法在移动构建中从我的可脚本化对象加载变量
我创建了一个全新的测试场景,它只包含一个预制件,其中包含一个包含 3 个可编写脚本对象的列表变量(位于我的项目资源文件夹中)和一个包含我的流程的脚本图,该流程将列表的计数记录到调试日志中,并打印列表中第一个可编写脚本对象的描述。
当我在 Unity 编辑器中测试时一切正常,但是当我为 iOS 构建并在手机上运行它时,可编写脚本的对象数据永远不会被加载(在这种情况下,是描述。)你可以在移动控制台中看到有一个缺少 arg 的错误是连接描述的地方。
这是我的脚本中定义 SO 的代码:
该脚本位于我的 Assets/Scripts/ScriptableObjects 文件夹中。
统一截图
这是我的脚本图:
这是 iOS 上的控制台日志:
我正在使用 Unity 版本 2021.1.15f1 我的可编写脚本的对象位于 Assets/Resources/Items 文件夹中类型。
在 Unity 编辑器中一切正常。
c# - ScriptableObject 抽象类:访问子变量
我正在尝试为我的游戏创建一个项目系统,但我无法访问从同一个抽象类继承的 Sriptable 对象中的不同变量。
我有一个派生自 SriptableObject 的抽象类:
我创建了一个位于 GameObject 上的 ItemController:
我创建了一个派生自 的 Scriptable Object ItemObject
,并将创建的 Scriptable Object 挂接到ItemController
脚本上:
我正在尝试对ItemController
坐落的对象执行 Raycast,并且我正在尝试atkBonus
从我的WeaponObject
.
这给我一个错误,我不知道为什么。“错误:‘ItemObject’不包含‘atkBonus’的定义,并且没有可访问的扩展方法‘atkBonus’......”
我可以从父抽象类访问变量。
有谁知道如何解决这个问题?
谢谢你。
c# - Unity ScriptableObject 传递对象引用,当对象被编辑时,保持这些更改
我有一个包含一些数据的 SO:
地形是一个类:
问题是,当我获得此 SO 的引用并将其中一些地形传递给其他类和脚本时,当我编辑这些 SO 时保留这些更改,我尝试将 Terrain 设为结构,但它不起作用并继续保留变化。
c# - 保存资产时Unity Broken text PPtr
我最近升级了我的 Unity 2021.1 版本,现在当我调用 AssetDatabase.SaveAssets() 时,我收到了错误
在以前的 Unity 版本中,我从未遇到过此错误。一切仍然有效,但此错误确实会在 AseetDatabase.SaveAssets() 调用的控制台中弹出。只有当我为我的对话系统创建一个新节点时才会发生这种情况。
我在对话框编辑器中添加了一个按钮,而不是单击它时调用 AssetDatabase.SaveAssets() ,这不会引发错误,但我不想要这个。每当我添加一个新节点时,我都想保存。
javascript - 获取 json 并在 Scriptable 中刷新
在可编写脚本的应用程序 iOS 中,我需要创建小部件从 url 获取 4 个 Json 数组并在小部件上打印并每 1 秒刷新一次数据!
URL = https://modeposh.com/wp-post.php
c# - 如何在统一自定义编辑器中从一组可编写脚本的对象中获取值?
我正在尝试制作自定义编辑器,但无法从数组中的可编写脚本对象中获取值。这是包含 CharacterData 可脚本化对象的 FightData 脚本。
CharacterData 包含统计信息。
这是 CharacterStats
我想总结所有统计数据并将它们显示在 FightData 的自定义编辑器中。但统计数据始终为空。这是我的方法:
c# - 如何统一为我的卡片ScriptableObject添加卡片效果?
我有这个 ScriptableObject,我想在创建时为每张卡片添加一个效果;我有一个名为“EffectManager”的脚本,它有一些方法作为效果。
这是我的卡片脚本
这是我的 EffectManager 脚本
我怎样才能使我创建的每张卡都具有与之关联的效果,该效果会在满足条件时激活?(在这种情况下,它会在卡片被召唤时)
c# - 统一。如何在 ScriptableObject 的代码中存储通用数据以供使用(不同的 NPC 类型)
我的游戏中有很多不同类型的 NPC,当然它们在逻辑上相似,它们有健康、有远见、可以使用代理和其他东西导航。
但是每种 NPC 类型都有自己的自定义行为,包括状态、动作、决策和钩子。这些脚本需要各种特定的数据,如协程运行、目标高度或当前跳跃方向。
而且我必须将其存储或保存在 NPC 单声道行为中,因此可以在状态脚本中访问它(它们是从 NPC 单声道行为调用的可编写脚本的对象)
现在我所做的是为每种数据类型指定数组,并在 NPC 预制件上分配它的计数。而且感觉不对...
在 JavaScript 世界中,我将只有 1 个数组或对象,并将该特定 NPC 需要的任何数据放入其中。但是在 C# 中,我需要一个强类型的地方来放置我的脚本可能需要的每种数据类型的数据。
脚本中的数据使用示例:
我不认为在 MonoBehavior 上有这么多数组和计数器是一个好主意,尤其是现场可能有很多 NPC。在保持脚本灵活性的同时构建更好的存储有什么建议吗?
澄清: 所有行为逻辑都由灵活的ScriptableObject状态控制。问题是这些对象不能存储任何运行时数据,但它们可以访问我的 Npc MonoBehavior(组件)实例。
这种方法的初始代码来自Unity 教程