全站通知:

Linking Entities to Hammer

阅读

    

2023-08-26更新

    

最新编辑:TrimesS_

阅读:

  

更新日期:2023-08-26

  

最新编辑:TrimesS_

来自S&boxWIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
-TrimesS-

如何将我制作的实体放入地图中?

8da57932ba181af.png
实体可通过实体工具放置,与 s&box 中的其他工具一样,它们会自动热载到您的游戏和 Hammer 中。
如果您的游戏发布在 asset.party,那么在 Hammer 中下载游戏的所有内容(模型、材质和粒子)后,用户就可以为您的游戏放置实体。

提示:Hammer 只显示 asset.party 中包含地图和实体标签的附加组件。如果您发布的附加组件没有出现在 Hammer 可用的 asset.party 软件包列表中,这可能就是原因所在。

如何创建实体?

创建可放置在 Hammer 中的实体非常简单,只需用 [HammerEntity] 标记即可。

using Sandbox;
using Editor;

/// <summary>
/// 该实体定义了第一人称射击游戏模式中玩家的出生点。
/// </summary>
[Library( "info_player_start" ), HammerEntity]
[Title( "Player Spawnpoint" ), Category( "Player" ), Icon( "place" )]
public class SpawnPoint : Entity
{
}

属性

8d92f36d98ce869.png
类中的任何属性都可以使用 [Property] 属性向 Hammer 公开。

public partial class MyEntity : Entity
{
	/// <summary>
	/// 在hammer中显示的帮助文字
	/// </summary>
	[Property( Title = "Start Disabled" ) ]
	public bool StartDisabled { get; set; } = false;
}

输入

实体类中的任何方法都可以使用 [Input] 属性作为输入向 Hammer 公开,您定义的参数会被自动处理。
定义输入的示例:

public partial class MyEntity : Entity
{
	/// <summary>
	/// 在 Hammer 和 Visual Studio 中显示我输入的描述
	/// </summary>
	[Input]
	public void DoSomethingElse( string str )
	{
		// ...
	}

	[Input( Name = "DoSomething" )]
	public void SomeInput()
	{
		// ...
	}
}

要获取输入的激活器,方法中应包含一个名为 "激活器 "的实体类型参数,如下图所示:

[Input]
public void AnotherSomething( Entity activator )
{
	// ...
}

输出

实体类中的任何输出都会自动展示给 Hammer。
定义输出的示例:

public partial class MyEntity : Entity
{
	/// <summary>
	/// 在 Hammer 和 Visual Studio 中显示的输出说明
	/// </summary>
    public Output OnSomethingHappened { get; set; }
}

触发输出

您可以像这样使用 Output.Fire(sender) 来触发输出:

protected Output OnEndTouch { get; set; }

public virtual void OnTouchEnd( Entity toucher )
{
	OnEndTouch.Fire( toucher );
}

Hammer 属性

所有这些都是可选属性,可添加到类中以改变其在 Hammer 中的行为和外观。
这并不是一个详尽的列表,更完整的列表可在此处找到。

固体

告诉 Hammer 此实体是基于画笔的。

[Solid]

支持固体

告诉 Hammer 此点实体也可以是画笔实体,例如 ent_door 实体。

[SupportsSolid]

编辑器模型

告诉 Hammer 实体要使用什么模型,并添加到类中。

[EditorModel( "models/editor/playerstart.vmdl" )]

编辑器精灵

告诉 Hammer 实体要使用什么精灵,并添加到类中。

[EditorSprite( "editor/info_target.vmat" )]

模型

使模型可以在 Hammer 中设置和更改。

[Model]

您还可以为实体设置默认模型,同时仍允许更改。

[Model( Model = "models/citizen/citizen.vmdl" )]

自动应用材质

自动将提供的材质应用到绑定的画笔上。

[AutoApplyMaterial( "materials/tools/toolstrigger.vmat" )]