Call Method on SkeletalMeshComponent


#1

I have a blueprint with a skeletal mesh component (myMesh) and a SkookumScriptClassData component. The code that I’ve written is:

@myMesh.show_material_section(0 false 0)

but I get an error message saying: “Requested non-existing method show_material_section() from class ActorComponent”. Any idea what I’ve screwed up? Thanks.

P.S. I also get a message in the Sk log that says “Due to recent plugin improvements, the SkookumScriptClassDataComponent ‘SkookumScriptClassData’ of BP_Test is no longer needed and can be deleted.” Are our only options now only Behavior and Mind?

Update: Restarting the UE4 editor and the Sk editor resolved the first problem. It now works as expected.


#2

The whole point of the SkookumScriptClassDataComponent is to add a USkookumScriptInstanceProperty to the class so that it can be used with :sk:. The message you’re seeing is from some automated code that detects when a given blueprint class is using :sk: so that it can create a USkookumScriptInstanceProperty at runtime without the need for manually adding a SkookumScriptClassDataComponent.

The current necessary conditions for a BP to be detected as using :sk: are for one or more of the following things to be true:

  • Non-empty constructor
  • Non-empty destructor
  • Contains :sk: data members

There might be cases where none of these are true. For instance, if class A had an :sk: method defined but didn’t have any data members or constructor/destructor. If you tried to call that method you’d get an error about the instance being null. So in a case like that, you might still want to add a class data component, but generally, you do not need to add them.