UE4 手把手教你做插件(4)做一个可以拖入场景的小方块插件

0,前言

学习一下如何编写一个有actor的插件,能够将它拖入场景里面。

1,创建插件

(1)创建一个空白插件

添加之后vs里面就会多出一个目录:

(2)给插件添加一个actor

 

 

创建完actor之后,再给actor创建一个组件

 

 都创建完之后,你vs的目录如下:

 2,代码修改

(1)MyCubeActor

添加一个我们新建的组件声明

class UMyCubeComponent* MyCubeComponent;

在构造函数中增加组件的创建

AMyCubeActor::AMyCubeActor()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	MyCubeComponent = CreateDefaultSubobject<UMyCubeComponent>(TEXT("MyCubeComponent"));
	RootComponent = (USceneComponent*)MyCubeComponent;
}

(2)MyCubeComponent

在头文件中声明增加:

	virtual void OnRegister() override;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, BlueprintSetter = SetBallMesh, Category = "Ball")
	UStaticMesh* BallMesh;
	UFUNCTION(BlueprintCallable, Category = "Rendering|Components|WaterBall3D")
	void SetBallMesh(UStaticMesh* Value);
	UPROPERTY(EditAnywhere, BlueprintReadWrite,  Category = "Ball")
	UStaticMeshComponent* CubeMeshComponent;

在构造函数中添加获取网格的代码:

	BallMesh = (UStaticMesh*)StaticLoadObject(UStaticMesh::StaticClass(), NULL, TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube"), NULL, LOAD_None, NULL);

在onregister函数中添加:

void UMyCubeComponent::OnRegister()
{
		Super::OnRegister();
		if (!CubeMeshComponent)
		{
			FName CubeMeshComponentName = MakeUniqueObjectName(this, UMyCubeComponent::StaticClass(), TEXT("CubeMesh"));
			CubeMeshComponent = NewObject<UStaticMeshComponent>(this, CubeMeshComponentName, RF_Transactional);
			CubeMeshComponent->RegisterComponent();
			//GetOwner()->AddInstanceComponent(WaterComponent);
			CubeMeshComponent->AttachToComponent(this, FAttachmentTransformRules::KeepRelativeTransform);
			CubeMeshComponent->SetStaticMesh(BallMesh);
			CubeMeshComponent->SetRelativeLocation(FVector::ZeroVector);
			CubeMeshComponent->SetRelativeRotation(FRotator::ZeroRotator);
			CubeMeshComponent->SetRelativeScale3D(FVector(50 / 50.f));
		}	
}

注意:这部分不能加到构造函数中,不然 网格绑定不了actor和component,会导致把方块儿拖到场景中时,actor,component与网格的坐标中心不一致。

 3,运行结果

拖入场景就可以看到我们自己创建的插件啦! 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Abaqus插件代码制作成插件,您需要遵循以下步骤: 1. 将插件代码保存在一个.py文件中。 2. 创建一个新的文件夹,并在该文件夹中创建一个命名为`__init__.py`的空文件。此文件将使该文件夹成为Python包。 3. 在该文件夹中创建一个命名为`abaqus_plugins.py`的文件,并将以下代码复制到该文件中: ``` from abaqus import * from abaqusConstants import * import os # Load the plugin dir_path = os.path.dirname(os.path.realpath(__file__)) plugin_path = os.path.join(dir_path, 'my_plugin.py') session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=150, height=150) session.openOdb(name='my_odb.odb') session.viewports['Viewport: 1'].setValues(displayedObject=session.odbs['my_odb.odb']) session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(CONTOURS_ON_DEF,)) session.XYPlot(name='Plot-1', variable=('U', 'COORD'),) session.writeODB(name='my_odb.odb') ``` 此代码将加载名为`my_plugin.py`的插件,并执行一些Abaqus操作。您需要将`my_plugin.py`替换为您的插件代码文件名。 4. 将插件代码文件和`abaqus_plugins.py`文件保存到该文件夹中。 5. 将该文件夹复制到Abaqus的插件目录中。在Windows上,插件目录位于`C:\SIMULIA\Abaqus\6.14-x\code\python2.7\plug-ins`。在Linux上,插件目录位于`/usr/local/abaqus/6.14-x/code/python2.7/plug-ins`。 6. 启动Abaqus并打开您想要运行插件的模型。 7. 在Abaqus界面中,单击"Plug-ins"菜单并选择"abaqus_plugins"。 8. 在打开的对话框中,单击"Run"按钮以运行插件。 请注意,这只是一个简单的示例,您需要根据您的插件代码进行修改和调整以适应插件开发。此外,如果您不熟悉Abaqus插件开发或Python编程,建议您参考Abaqus官方文档或其他资源以获取更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值