LibGDX JSON error: JSON standard does not allow identifiers
LibGDX JSON error: JSON standard does not allow identifiers
我复制并粘贴了一个 uiskin.json 文件以用于 Scene2D UI,但由于某种原因我的代码仍然崩溃。 这是给我错误的 uiskin.json 文件:JSON 标准不允许标识符 。这与 default.fnt、uiskin.atlas 和 uiskin.png
一起存储在我的资产文件夹中
{
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } },
com.badlogic.gdx.graphics.Color: {
green: { a: 1, b: 0, g: 1, r: 0 },
white: { a: 1, b: 1, g: 1, r: 1 },
red: { a: 1, b: 0, g: 0, r: 1 },
black: { a: 1, b: 0, g: 0, r: 0 },
},
com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: {
dialogDim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.45 } },
},
com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle: {
default: { down: default-round-down, up: default-round },
toggle: { down: default-round-down, checked: default-round-down, up: default-round }
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: { down: default-round-down, up: default-round, font: default-font, fontColor: white },
toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red }
},
com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle: {
default: { vScroll: default-scroll, hScrollKnob: default-round-large, background: default-rect, hScroll: default-scroll, vScrollKnob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: {
default: {
font: default-font, fontColor: white, background: default-select,
scrollStyle: default,
listStyle: { font: default-font, selection: default-select-selection }
}
},
com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle: {
default-vertical: { handle: default-splitpane-vertical },
default-horizontal: { handle: default-splitpane }
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: { titleFont: default-font, background: default-window, titleFontColor: white },
dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim }
},
com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: {
default-horizontal: { background: default-slider, knob: default-slider-knob },
default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: {
default-horizontal: { background: default-slider, knob: default-slider-knob },
default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
default: { font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
default: { selection: selection, background: textfield, font: default-font, fontColor: white, cursor: cursor }
},
com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: {
default: { checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle: {
default: { fontColorUnselected: white, selection: selection, fontColorSelected: white, font: default-font }
},
com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle: {
default: { background: default-pane, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle: {
default: { minus: tree-minus, plus: tree-plus, selection: default-select-selection }
},
com.badlogic.gdx.scenes.scene2d.ui.Tooltip$TooltipStyle: {
default: {
label: { font: default-font, fontColor: white },
background: default-pane
}
},
}
此外,这是我目前拥有的 Java 代码。只是一个简单的添加按钮,以供需要时参考。
public class MyGdxGame extends ApplicationAdapter {
private Skin skin;
private TextField username, password;
private Stage stage;
@Override
public void create () {
skin = new Skin(Gdx.files.internal("uiskin.json"));
stage = new Stage(new ScreenViewport());
final TextButton button = new TextButton("Click Me", skin, "default");
button.setWidth(200);
button.setHeight(50);
stage.addActor(button);
Gdx.input.setInputProcessor(stage);
}
@Override
public void render () {
Gdx.gl.glClearColor(0, 0, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
}
工具提示是 libgdx 的一项新功能,它仅存在于夜间构建中,因此您没有它,您可能从 libgdx 的 github 复制了它,您可以检查 here 它是 9 天前添加的。我检查了我最近安装的 libgdx,如果您尝试导入它,工具提示不存在。
基本删除:
com.badlogic.gdx.scenes.scene2d.ui.Tooltip$TooltipStyle: {
default: {
label: { font: default-font, fontColor: white },
background: default-pane
}
},
有同样的错误,不是从 wiki 复制的 uiskin.json。 (真实的例子)。做了一些谷歌搜索,结果是一个不同的问题(不同的主题),我看到 json 在名称和属性周围有双引号("
)。
所以代替:
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } },
做:
"com.badlogic.gdx.graphics.g2d.BitmapFont": { "default-font": { "file": "default.fnt" } },
在所有名称周围添加双引号消除了 Json standard does not allow identifiers
错误。不知道它在运行时是否可以在没有双引号的情况下工作,因为它会导致 json 文件中的错误。
我复制并粘贴了一个 uiskin.json 文件以用于 Scene2D UI,但由于某种原因我的代码仍然崩溃。 这是给我错误的 uiskin.json 文件:JSON 标准不允许标识符 。这与 default.fnt、uiskin.atlas 和 uiskin.png
一起存储在我的资产文件夹中{
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } },
com.badlogic.gdx.graphics.Color: {
green: { a: 1, b: 0, g: 1, r: 0 },
white: { a: 1, b: 1, g: 1, r: 1 },
red: { a: 1, b: 0, g: 0, r: 1 },
black: { a: 1, b: 0, g: 0, r: 0 },
},
com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: {
dialogDim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.45 } },
},
com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle: {
default: { down: default-round-down, up: default-round },
toggle: { down: default-round-down, checked: default-round-down, up: default-round }
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: { down: default-round-down, up: default-round, font: default-font, fontColor: white },
toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red }
},
com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle: {
default: { vScroll: default-scroll, hScrollKnob: default-round-large, background: default-rect, hScroll: default-scroll, vScrollKnob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: {
default: {
font: default-font, fontColor: white, background: default-select,
scrollStyle: default,
listStyle: { font: default-font, selection: default-select-selection }
}
},
com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle: {
default-vertical: { handle: default-splitpane-vertical },
default-horizontal: { handle: default-splitpane }
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: { titleFont: default-font, background: default-window, titleFontColor: white },
dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim }
},
com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: {
default-horizontal: { background: default-slider, knob: default-slider-knob },
default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: {
default-horizontal: { background: default-slider, knob: default-slider-knob },
default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
default: { font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
default: { selection: selection, background: textfield, font: default-font, fontColor: white, cursor: cursor }
},
com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: {
default: { checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle: {
default: { fontColorUnselected: white, selection: selection, fontColorSelected: white, font: default-font }
},
com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle: {
default: { background: default-pane, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle: {
default: { minus: tree-minus, plus: tree-plus, selection: default-select-selection }
},
com.badlogic.gdx.scenes.scene2d.ui.Tooltip$TooltipStyle: {
default: {
label: { font: default-font, fontColor: white },
background: default-pane
}
},
}
此外,这是我目前拥有的 Java 代码。只是一个简单的添加按钮,以供需要时参考。
public class MyGdxGame extends ApplicationAdapter {
private Skin skin;
private TextField username, password;
private Stage stage;
@Override
public void create () {
skin = new Skin(Gdx.files.internal("uiskin.json"));
stage = new Stage(new ScreenViewport());
final TextButton button = new TextButton("Click Me", skin, "default");
button.setWidth(200);
button.setHeight(50);
stage.addActor(button);
Gdx.input.setInputProcessor(stage);
}
@Override
public void render () {
Gdx.gl.glClearColor(0, 0, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
}
工具提示是 libgdx 的一项新功能,它仅存在于夜间构建中,因此您没有它,您可能从 libgdx 的 github 复制了它,您可以检查 here 它是 9 天前添加的。我检查了我最近安装的 libgdx,如果您尝试导入它,工具提示不存在。
基本删除:
com.badlogic.gdx.scenes.scene2d.ui.Tooltip$TooltipStyle: {
default: {
label: { font: default-font, fontColor: white },
background: default-pane
}
},
有同样的错误,不是从 wiki 复制的 uiskin.json。 (真实的例子)。做了一些谷歌搜索,结果是一个不同的问题(不同的主题),我看到 json 在名称和属性周围有双引号("
)。
所以代替:
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } },
做:
"com.badlogic.gdx.graphics.g2d.BitmapFont": { "default-font": { "file": "default.fnt" } },
在所有名称周围添加双引号消除了 Json standard does not allow identifiers
错误。不知道它在运行时是否可以在没有双引号的情况下工作,因为它会导致 json 文件中的错误。