Example with a private float field but marked as UPROPERTY

float GetFloatUPROPERTY(UObject* object, FName MyProperty)
{
	UClass* MyClass = object->GetClass();

	for (UProperty* Property = MyClass->PropertyLink; Property; Property = Property->PropertyLinkNext)
	{
		UFloatProperty* FloatProperty = Cast<UFloatProperty>(Property);
		if (FloatProperty && Property->GetFName() == MyProperty)
			return FloatProperty->GetPropertyValue(Property->ContainerPtrToValuePtr<float>(object));
	}
	return 0.0f;
}