How to programmatically add Tilemaps to a Grid
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am new to Unity3d and I'm trying to make my first 2d game.
In order to create Tilemaps in Unity, we usually right-click then choose 2D Object > Tilemap
, which gives us a Grid + Tilemap, each child tilemap in that grid is considered a layer.
What I want is to be able to generate/add tilemaps with a script to an empty Grid (everytime empty the Grid then add layers).
I want to make a map system where the map is generated using binary files every time the player changes the map.
Is that possible?
unity3d
add a comment |
I am new to Unity3d and I'm trying to make my first 2d game.
In order to create Tilemaps in Unity, we usually right-click then choose 2D Object > Tilemap
, which gives us a Grid + Tilemap, each child tilemap in that grid is considered a layer.
What I want is to be able to generate/add tilemaps with a script to an empty Grid (everytime empty the Grid then add layers).
I want to make a map system where the map is generated using binary files every time the player changes the map.
Is that possible?
unity3d
Sure it's possible. You would use Tilemap.SetTile. Then it's just a matter of mapping your binary file, the tiles, and your grid spacing all together.
– ryeMoss
Jan 4 at 18:47
But I have an emptyGrid
, I need to first add layers (Tilemap objects) to it. That's what I don't know how to do :/
– Haytam
Jan 4 at 18:54
I believe the tilemap layers are nothing more than a gameobject with a TileMap and TileMapRenderer components on it. You can instantiate this and make it a child of the Grid. And then you just need to run the SetTile method on the appropriate Gameobject/tilemap. Haven't tested this but fairly certain that's how it'd work.
– ryeMoss
Jan 4 at 19:05
And how would I instantiate a Gameobject, add TileMap/TileMapRenderer and make the Grid its parent please?
– Haytam
Jan 4 at 19:24
Instantiate and AddComponent
– ryeMoss
Jan 4 at 19:39
add a comment |
I am new to Unity3d and I'm trying to make my first 2d game.
In order to create Tilemaps in Unity, we usually right-click then choose 2D Object > Tilemap
, which gives us a Grid + Tilemap, each child tilemap in that grid is considered a layer.
What I want is to be able to generate/add tilemaps with a script to an empty Grid (everytime empty the Grid then add layers).
I want to make a map system where the map is generated using binary files every time the player changes the map.
Is that possible?
unity3d
I am new to Unity3d and I'm trying to make my first 2d game.
In order to create Tilemaps in Unity, we usually right-click then choose 2D Object > Tilemap
, which gives us a Grid + Tilemap, each child tilemap in that grid is considered a layer.
What I want is to be able to generate/add tilemaps with a script to an empty Grid (everytime empty the Grid then add layers).
I want to make a map system where the map is generated using binary files every time the player changes the map.
Is that possible?
unity3d
unity3d
asked Jan 4 at 18:41
HaytamHaytam
2,7162522
2,7162522
Sure it's possible. You would use Tilemap.SetTile. Then it's just a matter of mapping your binary file, the tiles, and your grid spacing all together.
– ryeMoss
Jan 4 at 18:47
But I have an emptyGrid
, I need to first add layers (Tilemap objects) to it. That's what I don't know how to do :/
– Haytam
Jan 4 at 18:54
I believe the tilemap layers are nothing more than a gameobject with a TileMap and TileMapRenderer components on it. You can instantiate this and make it a child of the Grid. And then you just need to run the SetTile method on the appropriate Gameobject/tilemap. Haven't tested this but fairly certain that's how it'd work.
– ryeMoss
Jan 4 at 19:05
And how would I instantiate a Gameobject, add TileMap/TileMapRenderer and make the Grid its parent please?
– Haytam
Jan 4 at 19:24
Instantiate and AddComponent
– ryeMoss
Jan 4 at 19:39
add a comment |
Sure it's possible. You would use Tilemap.SetTile. Then it's just a matter of mapping your binary file, the tiles, and your grid spacing all together.
– ryeMoss
Jan 4 at 18:47
But I have an emptyGrid
, I need to first add layers (Tilemap objects) to it. That's what I don't know how to do :/
– Haytam
Jan 4 at 18:54
I believe the tilemap layers are nothing more than a gameobject with a TileMap and TileMapRenderer components on it. You can instantiate this and make it a child of the Grid. And then you just need to run the SetTile method on the appropriate Gameobject/tilemap. Haven't tested this but fairly certain that's how it'd work.
– ryeMoss
Jan 4 at 19:05
And how would I instantiate a Gameobject, add TileMap/TileMapRenderer and make the Grid its parent please?
– Haytam
Jan 4 at 19:24
Instantiate and AddComponent
– ryeMoss
Jan 4 at 19:39
Sure it's possible. You would use Tilemap.SetTile. Then it's just a matter of mapping your binary file, the tiles, and your grid spacing all together.
– ryeMoss
Jan 4 at 18:47
Sure it's possible. You would use Tilemap.SetTile. Then it's just a matter of mapping your binary file, the tiles, and your grid spacing all together.
– ryeMoss
Jan 4 at 18:47
But I have an empty
Grid
, I need to first add layers (Tilemap objects) to it. That's what I don't know how to do :/– Haytam
Jan 4 at 18:54
But I have an empty
Grid
, I need to first add layers (Tilemap objects) to it. That's what I don't know how to do :/– Haytam
Jan 4 at 18:54
I believe the tilemap layers are nothing more than a gameobject with a TileMap and TileMapRenderer components on it. You can instantiate this and make it a child of the Grid. And then you just need to run the SetTile method on the appropriate Gameobject/tilemap. Haven't tested this but fairly certain that's how it'd work.
– ryeMoss
Jan 4 at 19:05
I believe the tilemap layers are nothing more than a gameobject with a TileMap and TileMapRenderer components on it. You can instantiate this and make it a child of the Grid. And then you just need to run the SetTile method on the appropriate Gameobject/tilemap. Haven't tested this but fairly certain that's how it'd work.
– ryeMoss
Jan 4 at 19:05
And how would I instantiate a Gameobject, add TileMap/TileMapRenderer and make the Grid its parent please?
– Haytam
Jan 4 at 19:24
And how would I instantiate a Gameobject, add TileMap/TileMapRenderer and make the Grid its parent please?
– Haytam
Jan 4 at 19:24
Instantiate and AddComponent
– ryeMoss
Jan 4 at 19:39
Instantiate and AddComponent
– ryeMoss
Jan 4 at 19:39
add a comment |
1 Answer
1
active
oldest
votes
Thanks to @ryeMoss, I ended up doing the following:
private Tilemap CreateTilemap(string tilemapName)
{
var go = new GameObject(tilemapName);
var tm = go.AddComponent<Tilemap>();
var tr = go.AddComponent<TilemapRenderer>();
tm.tileAnchor = new Vector3(AnchorX, AnchorY, 0);
go.transform.SetParent(_mapGrid.transform);
tr.sortingLayerName = "Main";
return tm;
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54044398%2fhow-to-programmatically-add-tilemaps-to-a-grid%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks to @ryeMoss, I ended up doing the following:
private Tilemap CreateTilemap(string tilemapName)
{
var go = new GameObject(tilemapName);
var tm = go.AddComponent<Tilemap>();
var tr = go.AddComponent<TilemapRenderer>();
tm.tileAnchor = new Vector3(AnchorX, AnchorY, 0);
go.transform.SetParent(_mapGrid.transform);
tr.sortingLayerName = "Main";
return tm;
}
add a comment |
Thanks to @ryeMoss, I ended up doing the following:
private Tilemap CreateTilemap(string tilemapName)
{
var go = new GameObject(tilemapName);
var tm = go.AddComponent<Tilemap>();
var tr = go.AddComponent<TilemapRenderer>();
tm.tileAnchor = new Vector3(AnchorX, AnchorY, 0);
go.transform.SetParent(_mapGrid.transform);
tr.sortingLayerName = "Main";
return tm;
}
add a comment |
Thanks to @ryeMoss, I ended up doing the following:
private Tilemap CreateTilemap(string tilemapName)
{
var go = new GameObject(tilemapName);
var tm = go.AddComponent<Tilemap>();
var tr = go.AddComponent<TilemapRenderer>();
tm.tileAnchor = new Vector3(AnchorX, AnchorY, 0);
go.transform.SetParent(_mapGrid.transform);
tr.sortingLayerName = "Main";
return tm;
}
Thanks to @ryeMoss, I ended up doing the following:
private Tilemap CreateTilemap(string tilemapName)
{
var go = new GameObject(tilemapName);
var tm = go.AddComponent<Tilemap>();
var tr = go.AddComponent<TilemapRenderer>();
tm.tileAnchor = new Vector3(AnchorX, AnchorY, 0);
go.transform.SetParent(_mapGrid.transform);
tr.sortingLayerName = "Main";
return tm;
}
answered Jan 5 at 14:20
HaytamHaytam
2,7162522
2,7162522
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54044398%2fhow-to-programmatically-add-tilemaps-to-a-grid%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Sure it's possible. You would use Tilemap.SetTile. Then it's just a matter of mapping your binary file, the tiles, and your grid spacing all together.
– ryeMoss
Jan 4 at 18:47
But I have an empty
Grid
, I need to first add layers (Tilemap objects) to it. That's what I don't know how to do :/– Haytam
Jan 4 at 18:54
I believe the tilemap layers are nothing more than a gameobject with a TileMap and TileMapRenderer components on it. You can instantiate this and make it a child of the Grid. And then you just need to run the SetTile method on the appropriate Gameobject/tilemap. Haven't tested this but fairly certain that's how it'd work.
– ryeMoss
Jan 4 at 19:05
And how would I instantiate a Gameobject, add TileMap/TileMapRenderer and make the Grid its parent please?
– Haytam
Jan 4 at 19:24
Instantiate and AddComponent
– ryeMoss
Jan 4 at 19:39