1-
1+ #define EMOJI_RUNTIME
22using System . Collections ;
33using System . Collections . Generic ;
44using UnityEngine ;
@@ -15,10 +15,12 @@ public class InlineManager : MonoBehaviour
1515
1616 private readonly Dictionary < string , SpriteInfoGroup > _alltags = new Dictionary < string , SpriteInfoGroup > ( ) ;
1717
18+ private readonly Dictionary < string , KeyValuePair < SpriteAsset , SpriteInfoGroup > > _spritemap = new Dictionary < string , KeyValuePair < SpriteAsset , SpriteInfoGroup > > ( ) ;
19+
1820 private IEmojiRender _render ;
1921
2022 public List < string > PreparedAtlas = new List < string > ( ) ;
21-
23+
2224 public bool HasInit { get ; private set ; }
2325
2426#if UNITY_EDITOR
@@ -276,7 +278,8 @@ void RebuildTagList()
276278 {
277279 EmojiTools . BeginSample ( "Emoji_rebuildTags" ) ;
278280 _alltags . Clear ( ) ;
279- #if UNITY_EDITOR
281+ _spritemap . Clear ( ) ;
282+ #if UNITY_EDITOR && ! EMOJI_RUNTIME
280283 if ( _unityallAtlases != null )
281284 {
282285 for ( int i = 0 ; i < _unityallAtlases . Count ; ++ i )
@@ -297,21 +300,22 @@ void RebuildTagList()
297300 }
298301
299302#else
300- for ( int i = 0 ; i < sharedAtlases . Count ; ++ i )
301- {
302- SpriteAsset asset = sharedAtlases [ i ] ;
303- for ( int j = 0 ; j < asset . listSpriteGroup . Count ; ++ j )
304- {
305- SpriteInfoGroup infogroup = asset . listSpriteGroup [ j ] ;
306- SpriteInfoGroup group ;
307- if ( alltags . TryGetValue ( infogroup . tag , out group ) )
308- {
309- Debug . LogErrorFormat ( "already exist :{0} " , infogroup . tag ) ;
310- }
311-
312- alltags [ infogroup . tag ] = infogroup ;
313- }
314- }
303+ for ( int i = 0 ; i < _sharedAtlases . Count ; ++ i )
304+ {
305+ SpriteAsset asset = _sharedAtlases [ i ] ;
306+ for ( int j = 0 ; j < asset . listSpriteGroup . Count ; ++ j )
307+ {
308+ SpriteInfoGroup infogroup = asset . listSpriteGroup [ j ] ;
309+ SpriteInfoGroup group ;
310+ if ( _alltags . TryGetValue ( infogroup . tag , out group ) )
311+ {
312+ Debug . LogErrorFormat ( "already exist :{0} " , infogroup . tag ) ;
313+ }
314+
315+ _alltags [ infogroup . tag ] = infogroup ;
316+ _spritemap [ infogroup . tag ] = new KeyValuePair < SpriteAsset , SpriteInfoGroup > ( asset , infogroup ) ;
317+ }
318+ }
315319#endif
316320 EmojiTools . EndSample ( ) ;
317321 }
@@ -384,7 +388,7 @@ public bool CanRendering(string tagName)
384388 public bool CanRendering ( int atlasId )
385389 {
386390
387- #if UNITY_EDITOR
391+ #if UNITY_EDITOR && ! EMOJI_RUNTIME
388392 if ( _unityallAtlases != null )
389393 {
390394 for ( int i = 0 ; i < _unityallAtlases . Count ; ++ i )
@@ -399,15 +403,15 @@ public bool CanRendering(int atlasId)
399403
400404 return false ;
401405#else
402- for ( int i = 0 ; i < sharedAtlases . Count ; ++ i )
403- {
404- SpriteAsset asset = sharedAtlases [ i ] ;
405- if ( asset . ID == atlasId )
406- {
407- return true ;
408- }
409- }
410- return false ;
406+ for ( int i = 0 ; i < _sharedAtlases . Count ; ++ i )
407+ {
408+ SpriteAsset asset = _sharedAtlases [ i ] ;
409+ if ( asset . ID == atlasId )
410+ {
411+ return true ;
412+ }
413+ }
414+ return false ;
411415#endif
412416 }
413417
@@ -429,10 +433,9 @@ public void PushRenderAtlas(SpriteAsset _spriteAsset)
429433 public SpriteInfoGroup FindSpriteGroup ( string TagName , out SpriteAsset resultatlas )
430434 {
431435 EmojiTools . BeginSample ( "Emoji_FindSpriteGroup" ) ;
432- #if UNITY_EDITOR
436+ #if UNITY_EDITOR && ! EMOJI_RUNTIME
433437
434438 resultatlas = null ;
435-
436439 SpriteInfoGroup result = null ;
437440 if ( _unityallAtlases != null )
438441 {
@@ -463,35 +466,23 @@ public SpriteInfoGroup FindSpriteGroup(string TagName, out SpriteAsset resultatl
463466 EmojiTools . EndSample ( ) ;
464467 return result ;
465468#else
466- resultatlas = null ;
467-
468- SpriteInfoGroup result = null ;
469- if ( sharedAtlases != null )
470- {
471- for ( int i = 0 ; i < sharedAtlases . Count ; ++ i )
472- {
473- SpriteAsset asset = sharedAtlases [ i ] ;
474- for ( int j = 0 ; j < asset . listSpriteGroup . Count ; ++ j )
475- {
476- SpriteInfoGroup group = asset . listSpriteGroup [ j ] ;
477- if ( group . tag . Equals ( TagName ) )
478- {
479- result = group ;
480- resultatlas = asset ;
481- break ;
482- }
483- }
484- }
485- }
486- EmojiTools . EndSample ( ) ;
487- return result ;
469+ resultatlas = null ;
470+ SpriteInfoGroup result = null ;
471+ KeyValuePair < SpriteAsset , SpriteInfoGroup > data ;
472+ if ( _spritemap . TryGetValue ( TagName , out data ) )
473+ {
474+ result = data . Value ;
475+ resultatlas = data . Key ;
476+ }
477+ EmojiTools . EndSample ( ) ;
478+ return result ;
488479#endif
489480 }
490481
491482 public SpriteAsset FindAtlas ( int atlasID )
492483 {
493484 EmojiTools . BeginSample ( "Emoji_FindAtlas" ) ;
494- #if UNITY_EDITOR
485+ #if UNITY_EDITOR && ! EMOJI_RUNTIME
495486 SpriteAsset result = null ;
496487 if ( _unityallAtlases != null )
497488 {
@@ -517,25 +508,25 @@ public SpriteAsset FindAtlas(int atlasID)
517508 EmojiTools . EndSample ( ) ;
518509 return result ;
519510#else
520- for ( int i = 0 ; i < sharedAtlases . Count ; ++ i )
521- {
522- SpriteAsset asset = sharedAtlases [ i ] ;
523- if ( asset . ID . Equals ( atlasID ) )
524- {
525- EmojiTools . EndSample ( ) ;
526- return asset ;
527- }
528- }
529- EmojiTools . EndSample ( ) ;
530- return null ;
511+ for ( int i = 0 ; i < _sharedAtlases . Count ; ++ i )
512+ {
513+ SpriteAsset asset = _sharedAtlases [ i ] ;
514+ if ( asset . ID . Equals ( atlasID ) )
515+ {
516+ EmojiTools . EndSample ( ) ;
517+ return asset ;
518+ }
519+ }
520+ EmojiTools . EndSample ( ) ;
521+ return null ;
531522#endif
532523 }
533524
534525
535526 public SpriteAsset FindAtlas ( string atlasname )
536527 {
537528 EmojiTools . BeginSample ( "FindAtlas" ) ;
538- #if UNITY_EDITOR
529+ #if UNITY_EDITOR && ! EMOJI_RUNTIME
539530 SpriteAsset result = null ;
540531 if ( _unityallAtlases != null )
541532 {
@@ -561,23 +552,23 @@ public SpriteAsset FindAtlas(string atlasname)
561552 EmojiTools . EndSample ( ) ;
562553 return result ;
563554#else
564- for ( int i = 0 ; i < sharedAtlases . Count ; ++ i )
565- {
566- SpriteAsset asset = sharedAtlases [ i ] ;
567- if ( asset . AssetName . Equals ( atlasname ) )
568- {
569- EmojiTools . EndSample ( ) ;
570- return asset ;
571- }
572- }
573-
574- SpriteAsset newasset = InstantiateSpriteAsset ( atlasname ) ;
575- if ( newasset != null )
576- {
577- sharedAtlases . Add ( newasset ) ;
578- }
579- EmojiTools . EndSample ( ) ;
580- return newasset ;
555+ for ( int i = 0 ; i < _sharedAtlases . Count ; ++ i )
556+ {
557+ SpriteAsset asset = _sharedAtlases [ i ] ;
558+ if ( asset . AssetName . Equals ( atlasname ) )
559+ {
560+ EmojiTools . EndSample ( ) ;
561+ return asset ;
562+ }
563+ }
564+
565+ SpriteAsset newasset = InstantiateSpriteAsset ( atlasname ) ;
566+ if ( newasset != null )
567+ {
568+ _sharedAtlases . Add ( newasset ) ;
569+ }
570+ EmojiTools . EndSample ( ) ;
571+ return newasset ;
581572#endif
582573
583574 }
0 commit comments