标签: scriptable-object

如何查找文件夹中的所有可编写脚本的对象,然后从其中加载变量?

我的统一项目中的“Resources/ScriptableObjects/Skins”下有一个文件夹。我需要获取文件夹中的所有对象,为索引生成一个随机数,然后将精灵分配给脚本附加到的现有游戏对象。我收到的当前错误是第 151 行的“NullReferenceException:对象引用未设置为对象的实例”,但我正在第 149 行创建该对象的实例。这是我的函数,用于将文件夹中随机可脚本对象中的精灵分配给脚本所绑定的游戏对象:

void AssignRandomSkin(){
    // Load all skins into memory
    Object[] skinObjects = Resources.LoadAll("ScriptableObjects/Skins");


    // Get length of list
    int amountOfSkins = skinObjects.Length;

    // Get random index of skin to assign
    int skinToAssignIndex = Random.Range(0, amountOfSkins);

    GameObject thisSkin = Instantiate(skinObjects[skinToAssignIndex]) as GameObject;
    // Assign it to game object
    gameObject.GetComponent<SpriteRenderer>().sprite = thisSkin.GetComponent<Sprite>();

}
Run Code Online (Sandbox Code Playgroud)

这是可编写脚本的对象:

using UnityEngine;

[CreateAssetMenu(fileName = "Skin", menuName = "ScriptableObjects/SkinObject", order = 1)]
public class SkinObject : ScriptableObject
{
    public string spriteName; // Name of sprite …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine scriptable-object

2
推荐指数
1
解决办法
8891
查看次数

在 Unity 中退出 Playmode 后返回 ScriptableObject 的原始值

我有一个像这样的 ScriptableObject

在此输入图像描述

在 Playmode 期间我调整 CurrenHealthValue

在此输入图像描述

当我存在 Playmode 时,CurrentHealthValue=80 不会返回到 40,我知道这是 ScriptableObject 的工作原理,但我想知道是否有任何方法可以在存在 Playmode 后自动返回 40 原始值,而不是手动返回在开始新的 Playmode 之前将值重写为 40。

unity-game-engine scriptable-object

2
推荐指数
1
解决办法
1188
查看次数

如何使用 ScriptableObject 进行关卡的预制件变换?

我有 3 种类型的预制件:A、B 和 C

在设计关卡时,在播放模式下,我将它们添加并放置在关卡中。

如何创建一个 ScriptableObject 来保存对这些预制件及其转换的所有实例的引用?

具体来说,在 PlayMode 中,Scriptable 对象应该动态响应 PlayMode 中预制件的位置和旋转变化。

我无法想象如何做到这一点,尽管这似乎是脚本化对象的一个​​很好的用途。

unity-game-engine scriptable-object

1
推荐指数
1
解决办法
3785
查看次数

标签 统计

scriptable-object ×3

unity-game-engine ×3

c# ×1