ScriptClass类似于标准类。您可以创建此类的实例,每个实例彼此独立。对于普通的类实现,不应该使用静态函数/属性,因为uScript无法正确识别它们。相反,您应该像在C#中构造类一样构造它。唯一的区别是需要根据需要添加构造函数/函数/属性属性。
请注意,ScriptConstructor是完全可选的。相反,您可以根据需要使用另一个类的属性来访问您的类。主模块使用vector3类的构造函数,但对player类来说并不是这样,对其大多数相关类(例如playerLook)也不是这样。
定义的ScriptClass可以直接用作ScriptConstructor、ScriptFunctions和ScriptProperties的参数或返回类型。
属性构造函数采用“name”参数。但是,这是完全可选的。如果不提供name参数,uScript将只使用类名。然而,为了团体项目和命名规范。我(Ster)强烈建议您直接命名为ScriptModule。
示例代码:
[ScriptClass("vector3")]
public class Vector3Class
{
// 这里,我们存储Vector3的状态,以便与属性/函数一起使用。
public Vector3 Vector3 { get; private set; }
// 此构造函数仅供模块使用。
public Vector3Class(Vector3 vector3) => Vector3 = vector3;
// 此构造函数供脚本使用。
[ScriptConstructor]
public Vector3Class(float x, float y, float z) => Vector3 = new Vector3(x, y, z);
[ScriptProperty]
public float X
{
get => Vector3.x;
set => Vector3 = new Vector3(value, Vector3.y, Vector3.z);
}
[ScriptProperty]
public float Y
{
get => Vector3.y;
set => Vector3 = new Vector3(Vector3.x, value, Vector3.z);
}
[ScriptProperty]
public float Z
{
get => Vector3.z;
set => Vector3 = new Vector3(Vector3.x, Vector3.y, value);
}
[ScriptFunction]
public float Distance(Vector3Class other)
{
return Vector3.Distance(Vector3, other.Vector3);
}
[ScriptFunction]
public override string ToString()
{
return $"{Vector3.x}x, {Vector3.y}y, {Vector3.z}z";
}
}
游戏交流区
攻略区
问答区
Mod发布区
Mod地图发布区
Mod技术区
汉化区
角色扮演交流区
技术交流
开服教程区
服务器宣传区
游戏更新公告区
MiaBot框架
圆心云开服面板
话题中心
社区公告
认证申请
工具/软件区
RGB颜色对照表
签到中心
幸运抽奖
排行榜
友情链接
小黑屋
周边商城


