Download

Blueprint Corruption with DataTables when re-opening a project

UPDATE: Still an issue in official 4.5

https://www.youtube.com/watch?v=7BblboFi-fc

Here is a video demonstration of the issue I am experiencing. Every time I reopen a saved project that uses the Get Data Table Row node the links to use the out row are are broken. In the video I demonstrate how I must first select the same Data Table that is already in the node to reconnect it.

I’ve made a bug report on this in the past, but I figured it might be worth revisiting this since I’m still having this issue in the 4.5 preview. At this point I don’t know if it’s a bug or if I simply don’t know how to use DataTables properly so I want to talk about this on the forums because I feel there is a lot of confusion about DataTables and this may be helpful to someone else in the future.

As a sanity check I’ve set up a brand new blank project(the one shown in the video) that uses the example from this blog post: https://www.unrealengine.com/blog/driving-gameplay-with-data-from-excel

To test the functionality of GetDataTableRow I created an actor blueprint that prints XPtoLvl of a given row to the screen.

To implement the structure I used a helpful Answer Hub post which explains in detail how it should be implemented. This is the exact code that I used to implement the structure.

Here is how the .h file is implemented:


#pragma once
#include "LevelUp.generated.h"

/** Structure that defines a level up table entry */
USTRUCT(BlueprintType)
struct FLevelUpData : public FTableRowBase
{
	GENERATED_USTRUCT_BODY()

public:

	FLevelUpData()
		: XPtoLvl(0)
		, XP(0)
	{}

	/** The 'Name' column is the same as the XP Level */

	/** XP to get to the given level from the previous level */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LevelUp)
		int32 XPtoLvl;

	/** This was the old property name (represented total XP) */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LevelUp)
		int32 XP;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = LevelUp)
		TAssetPtr<UTexture> Asset;
};


UCLASS(Abstract, CustomConstructor)
class ULevelUp : public UObject
{
	GENERATED_UCLASS_BODY()

	ULevelUp(const class FPostConstructInitializeProperties& PCIP) : Super(PCIP) {}
};


And the .cpp(as recommended by the Answer Hub post I deleted all references to the automatically generated constructor and destructor):



// Fill out your copyright notice in the Description page of Project Settings.

#include "DataTableTest.h"
#include "LevelUp.h"



Again, not sure if this is a bug that just hasn’t been fixed yet, if it’s an issue with my setup, or if I just don’t know how to use DataTables. I’ve tried to make this as clean a project as possible and followed the example provided in the article as closely as possible.

With regards to my setup. I am using Unreal Engine 4.5 preview, a blank project with the alterations I’ve mentioned above, and Visual Studio 2013. I have reinstalled UE4 and Visual Studio recently trying to remedy this bug to no avail. Any help will be greatly appreciated! I’m working on a dialogue system that uses Data Tables, but this and the inability to dynamically change DataTables is proving to be quite the show stopper… :frowning:

If you’re interested in seeing the state of it now I recently posted a video about it. I’d love to put this on the Marketplace at some point, but I can’t proceed with my vision for the project with my current situation and the state of Data Tables.
http://youtu.be/ff7Yva-0MmM