我有一个字符脚本对象,里面有几个方法,比如GetDate,GetAge(这里没有显示),我在里面创建了一个构造函数,但是我不知道如何通过构造函数创建一个ScriptableObject的示例,这就是我想做的.
我试过只在检查器中输入值,但这并没有运行构造函数中的方法。
Character.cs
[CreateAssetMenu]
[Serializable]
public class Character : Scriptable Object
{
// Attributes
public string firstName;
public string middleName;
public string lastName;
public string fullName;
public bool isMale;
// Constructor
public Character(string _firstName, string _middleName, string _lastName, bool _isMale)
{
firstName = _firstName;
middleName = _middleName;
lastName = _lastName;
// All The Functions
fullName = string.Format("{0} {1} {2}", firstName, middleName,
lastName);
isMale = _isMale;
// and all the other functions like date calculator.
}
}
我想通过这个构造创建一个脚本对象的示例。
Character char("x", "y", "z", true);
或者当我在Unity Inspector中键入必填字段时,它将运行所有类似于全名string.format
的方法。
2条答案
按热度按时间3xiyfsfu1#
不,不是那样的。现在还不清楚为什么你必须使用
ScriptableObject
s而不是一个简单的类(we came from this question),在那里你可以简单地配置这些字符,例如在检查器中或使用eg。但是,您可以使用某种工厂方法,例如:
或者可选地例如在
所以游戏开始时它就在那里。
如果您真的希望在Inspector中键入这些名称时拥有它,您将不会通过实现
Editor
来使用Custom Inspector作为
#if UNITY_EDITOR
的替代,你当然可以把CharacterEditor
放在一个完全独立的脚本中,并把它放在一个名为Editor
的文件夹中。在这两种情况下,相应的代码在构建时都会被剥离。q8l4jmvw2#
你不能使用构造函数创建一个新的ScriptableObject示例(很像monobhavior),所以你需要使用API方法
我添加了一个工作样本
}
这是创建Character的类