Spine Sprite Attacher

Unity3D/Problems 2018. 11. 6. 11:02
반응형

UnityException: Texture '1201001' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.

UnityEngine.Texture2D.GetPixel (Int32 x, Int32 y) (at C:/buildslave/unity/build/Runtime/Export/Texture.cs:382)

Spine.Unity.Examples.SpriteAttacher.OnValidate () (at Assets/Spine Examples/Scripts/Sample Components/Legacy/SpriteAttacher.cs:64)

UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)






Atlas Region Attacher 



https://drive.google.com/open?id=1m5FooeHxLEVm38MgAM6feKyqZFIf5Itc



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Spine.Unity;
using Spine.Unity.Modules;
using Spine;
using Spine.Unity.Modules.AttachmentTools;
 
public class Hero : MonoBehaviour {
 
    public SkeletonAnimation skelAnim;
    public int weaponId;
 
    public SpineAtlasAsset atlasAsset;
 
    public Sprite[] arrWeaponSprite;
    private Coroutine routine;
 
    // Use this for initialization
    void Start () {
        Application.runInBackground = true;
        skelAnim.AnimationState.Complete += AnimationState_Complete;
        this.SwapRandomWeapon();
        this.skelAnim.AnimationState.SetAnimation(0"attack"false);//.TimeScale = 1.2f;
        //routine = StartCoroutine(this.WaitForSimulation());
    }
 
    private void SwapRandomWeapon()
    {
        var skeletonRenderer = this.skelAnim.GetComponent<SkeletonRenderer>();
        float scale = skeletonRenderer.skeletonDataAsset.scale;
        var regionName = this.arrWeaponSprite[Random.Range(0, arrWeaponSprite.Length)].name;
        Debug.LogFormat("regionName: {0}", regionName);
        AtlasRegion region = this.atlasAsset.GetAtlas().FindRegion(regionName);
        var newRegionAttachment = region.ToRegionAttachment(region.name, scale);
        skelAnim.skeleton.FindSlot("slot_weapon").Attachment = newRegionAttachment;
    }
 
    private int attackCount = 0;
 
    private void AnimationState_Complete(Spine.TrackEntry trackEntry)
    {
        Debug.LogFormat("{0}", trackEntry.Animation.Name);
        if (trackEntry.Animation.Name == "attack")
        {
            attackCount++;
            if (this.attackCount > 10)
            {
                this.attackCount = 0;
                if (this.routine != null)
                    StopCoroutine(this.routine);
                this.skelAnim.AnimationState.SetAnimation(0"idle"true).TimeScale = 1;
 
                this.routine = StartCoroutine(this.WaitForSeconds(3f, () =>
                {
                    this.SwapRandomWeapon();
                    //StopCoroutine(this.routine);
                    //this.routine = StartCoroutine(this.WaitForSimulation());
                    this.skelAnim.AnimationState.SetAnimation(0"attack"false);//.TimeScale = 1.2f;
                }));
            }
            else {
                this.skelAnim.AnimationState.SetAnimation(0"attack"false);//.TimeScale = 1.2f;
            }
        }
    }
 
    private IEnumerator WaitForSeconds(float t, System.Action onComple)
    {
        yield return new WaitForSeconds(t);
        onComple();
    }
 
    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonUp(0))
        {
            
        }
    }
}
 
cs








var skeletonRenderer = this.skelAnim.GetComponent<SkeletonRenderer>();
float scale = skeletonRenderer.skeletonDataAsset.scale;
var regionName = this.arrWeaponSprite[Random.Range(0, arrWeaponSprite.Length)].name;
regionName = "1201001";
Debug.LogFormat("regionName: {0}", regionName);
AtlasRegion region = this.atlasAsset.GetAtlas().FindRegion(regionName);
this.newRegionAttachment = region.ToRegionAttachment(region.name, scale);
newRegionAttachment.RegionOffsetX = -81.08f;
newRegionAttachment.RegionOffsetY = 83.75f;
skelAnim.skeleton.FindSlot("slot_weapon").Attachment = newRegionAttachment;
newRegionAttachment.UpdateOffset();


반응형

'Unity3D > Problems' 카테고리의 다른 글

[SOLVED] EnableSavedGames ERROR_NOT_AUTHORIZED  (0) 2019.02.01
Gradle Build Failed  (1) 2018.12.06
DEBUG: Star ting Auth Transition. Op: SIGN_IN status: ERROR_TIMEOUT  (0) 2018.10.25
CompareApproximately , fRoot  (0) 2017.02.21
Vector3.Angle  (0) 2016.12.03
: