Cloning is a feature that allows a sprite to create a clone, or semi-duplicate, of itself, while the project is running. This can be useful in tower defense games, for example, for a wave of objects. Clones of a sprite will be the same as the original, or parent sprite, but as a separate instance. Clones inherit the parent's scripts, costumes, sounds, and properties, but can then be modified. There is a limit of 300 clones per project to prevent excessive lagging or crashes, but 301 can be made.
Create Clone of ()
- Main article: Create Clone of ()
create clone of [myself v]
This block will clone the sprite it runs in. Its version in the Scratch Day 2011 prealpha had no dropdown insert to select a sprite.
create clone // category=control
It is also possible to clone other clones recursively.
When I Start as a Clone
- Main article: When I Start as a Clone
when I start as a clone
This Hat Block activates when a clone is created. It only runs in the newly created clone, not previous clones or the parent.
Delete This Clone
- Main article: Delete This Clone
delete this clone
This Cap Block will delete the clone it runs in.
Not to be confused with cloning, sprites can be duplicated by two methods:
- Right click on a sprite in the sprites area or stage, and select "duplicate".
- Select the duplicate tool (looks like a stamp) above the stage area and to the left of the presentation buttons. Then click on the sprite you want to be duplicated.
This will make the new sprite appear in the new sprites area with all of the same costumes, scripts, and sounds.
Variables for all sprites will be the same for each clone, but variables for this sprite only will be different for each clone.
Cloning in Scratch Mods
In Panther-style cloning, a clone inherits its parent's properties, but is only a clone of it, not a new sprite. Other sprites can sense the clones, using the Touching ()? block, with the parent as its argument. The code for Panther-style cloning was actually implemented in Scratch 1.4, hinting that it was a planned feature, but wasn't added. Scratch 2.0 uses this style of cloning.
In BYOB-style cloning, a clone is a new sprite in the sprite list, with editable data all of its own. Clones are created with an Operators block "(clone)", which clones a sprite and reports a reference to it, which can then be used to control it.