转自:http://aigo.iteye.com/blog/2279503
void ARaceSpline::OnConstruction(const FTransform& Transform) { for (int32 i = 0; i < mSplineComponent->GetNumSplinePoints() - 1; i++) { USplineMeshComponent* SplineMesh = ConstructObject<USplineMeshComponent>(USplineMeshComponent::StaticClass(), this); SplineMesh->bCreatedByConstructionScript = true; SplineMesh->SetMobility(EComponentMobility::Movable); SplineMesh->AttachParent = mSplineComponent; //Set the color! UMaterialInstanceDynamic* dynamicMat = UMaterialInstanceDynamic::Create(mSplineMeshMaterial, NULL); dynamicMat->SetVectorParameterValue(TEXT("Color"), FLinearColor(mSegments[i].mColor)); SplineMesh->bCastDynamicShadow = false; SplineMesh->SetStaticMesh(mGridMesh); SplineMesh->SetMaterial(0, dynamicMat); //Width of the mesh SplineMesh->SetStartScale(FVector2D(50, 50)); SplineMesh->SetEndScale(FVector2D(50, 50)); FVector pointLocationStart, pointTangentStart, pointLocationEnd, pointTangentEnd; mSplineComponent->GetLocalLocationAndTangentAtSplinePoint(i, pointLocationStart, pointTangentStart); mSplineComponent->GetLocalLocationAndTangentAtSplinePoint(i + 1, pointLocationEnd, pointTangentEnd); SplineMesh->SetStartAndEnd(pointLocationStart, pointTangentStart, pointLocationEnd, pointTangentEnd); } RegisterAllComponents(); }